home *** CD-ROM | disk | FTP | other *** search
/ Atari Forever 4 / Atari Forever 4.zip / Atari Forever 4.iso / PD_THEMA / CLI / COMMAND / COMMAND.TXT < prev    next >
Text File  |  1998-03-14  |  117KB  |  2,882 lines

  1.                                     -1-
  2.  
  3. Inhalt
  4.  
  5. 1 Einleitung zu command.prg ........................................  3
  6.  
  7. 2 Allgemeine Hinweise zur Befehlseingabe ...........................  4
  8.  
  9. 3 Allgemeine Befehle ...............................................  7
  10.   3.1 Besondere Befehle ............................................ 27
  11.   3.2 Zahlkonvertierungen .......................................... 28
  12.  
  13. 4 Die ALIAS-Einrichtung ............................................ 29
  14.   4.1 Einführung ................................................... 29
  15.   4.2 ALIAS-Befehlssatz ............................................ 29
  16.  
  17. 5 Die History-Einrichtung .......................................... 31
  18.   5.1 Einführung ................................................... 31
  19.   5.2 Die !-Befehle ................................................ 33
  20.  
  21. 6 Das Batch-Processing ............................................. 34
  22.   6.1 Einführung ................................................... 34
  23.   6.2 Befehlssatz .................................................. 34
  24.   6.3 Beispiele .................................................... 41
  25.     6.3.1 Bsp.1 .................................................... 41
  26.     6.3.2 Bsp.2 .................................................... 42
  27.     6.3.3 Bsp.3 .................................................... 43
  28.  
  29. 7 Variablen ........................................................ 44
  30.   7.1 Allgemeines zu den Variablen ................................. 46
  31.   7.2 Beispiel ..................................................... 47
  32.     7.2.1 Der File cc .............................................. 48
  33.  
  34. 8 EDI .............................................................. 49
  35.   8.1 Die Kommandos von EDI ........................................ 49
  36.  
  37. 9 Fehlermeldungen .................................................. 51
  38.  
  39. 10 Die Ausgabeumleitung ............................................ 54
  40.  
  41. 11 Allgemeines Blabla zum Schluß ................................... 55
  42.   11.1 Lieferumfang ................................................ 55
  43.   11.2 Zur Programmierung .......................................... 55
  44.  
  45. 12 ANHANG A (Befehlszusammenfassung) ............................... 58
  46.  
  47. 13 ANHANG B (oldy-Beispiele) ....................................... 61
  48.   13.1 Beispiel 1 für die Verwendung des oldy-Befehls .............. 61                                     -2-
  49.  
  50.  
  51.   13.2 oldy, die Zweite ............................................ 62
  52.  
  53. 14 Index ........................................................... 63
  54.  
  55.  
  56.                                     -3-
  57.  
  58. 1 Einleitung zu command.prg
  59.  
  60. command.prg ist ein Kommandointerpreter, der auf herkömmliche Art (à la 
  61. MS-DOS o.ä.), also ohne GEM oder ähnliche Bedienoberflächen, die Arbeit 
  62. mit dem ATARI unterstützen soll.  Er umfaßt die dafür üblichen  Befehle 
  63. wie z.B.  für das Filekopieren,  das Filelöschen oder die  Fileumbenen-
  64. nung.
  65. Einige Befehle wurden bei UNIX abgeschaut. Ein Teil der Historyeinrich-
  66. tung findet in ähnlicher Form unter VMS Verwendung.  Die Befehle müssen 
  67. via  Tastatur  eingegeben  werden.  Es wird  zur  Benutzung  also  kein 
  68. Gebrauch von der Maus gemacht!
  69. Über  die  bereits erwähnte Historyeinrichtung  ist  es  möglich,  alte 
  70. Befehle relativ einfach erneut aufzurufen,  ohne eine komplette Neuein-
  71. gabe der Zeile vornehmen zu müssen.
  72. Im  Folgenden  findet sich eine Zusammenstellung der  Befehle  mit  Be-
  73. schreibung,  sowie eine Erklärung zu den zusätzlichen Features wie z.B. 
  74. das Batchprocessing.
  75.  
  76. Es versteht sich wohl von selbst,  daß ich für das korrekte Funktionie-
  77. ren des Programms keine Garantie übernehme.  Datenverluste,  die  durch 
  78. auftretende  Programmfehler oder eine fehlerhafte Bedienung  verursacht 
  79. worden sind, hat jeder selbst zu verdauen!
  80. Gefundene Fehler oder Probleme bitte ich an mich weiterzuleiten  (meine 
  81. Adresse steht im 'Allgemeinen Blabla'-Abschnitt).
  82.  
  83.  
  84.                                     -4-
  85.  
  86. 2 Allgemeine Hinweise zur Befehlseingabe
  87.  
  88. Die Eingabe eines Befehls kann mit Hilfe der Cursortasten,  der DELETE-
  89. Taste, der ESC-Taste und der BACKSPACE-Taste korrigiert werden!
  90.  
  91. CONTROL-'<-' bzw. CONTROL-'->' bringen den Cursor an den Zeilenanfang / 
  92. das Zeilenende.
  93.  
  94. SHIFT-'->'  bzw.  SHIFT-'<-' bringen den Cursor ein Wort nach rechts  / 
  95. links.
  96.  
  97. CONTROL-X vertauscht das aktuelle mit dem folgenden Zeichen.
  98.  
  99. CONTROL-D löscht alle Zeichen vom Prompt bis zur Cursorposition.
  100.  
  101. INSERT expandiert einen Eingabestring,  wenn es einen File im aktuellen 
  102. Ordner gibt, der mit diesem String beginnt.
  103.  
  104. Man befindet sich übrigens die ganze Zeit in einem  Einfügemodus,  d.h. 
  105. beim  Korrigieren  einer  Zeile  werden  keine  Zeichen  überschrieben. 
  106. Überflüssige Zeichen müssen also explizit gelöscht werden!
  107.  
  108. Die ESC-Taste löscht die komplette Zeile. Die anderen Tasten haben ihre 
  109. übliche Funktion.
  110.  
  111. Viele  Befehle  erwarten mehrere Argumentangaben  oder  lassen  mehrere 
  112. Argumente zu.  Diese müssen jeweils durch einen Blank abgegrenzt  sein, 
  113. z.B.  würde "dir *.prg *.tos" zuerst alle PRG-Files und dann alle  TOS-
  114. Dateien des aktuellen Verzeichnisses aufzeigen.
  115.  
  116. Dem  Benutzer älterer Versionen des Interpreters fällt vielleicht  auf, 
  117. daß  die Anmerkung nur Befehlseingaben in Kleinbuchstaben  vorzunehmen, 
  118. nicht  mehr  vorhanden ist.  Diese Restriktion habe  ich  entfernt.  Es 
  119. können jetzt Eingaben in Groß- und Kleinschreibung erfolgen.
  120. Man muß allerding beachten,  daß bei einer Eingabe der erste String  in 
  121. Kleinbuchstaben umgewandelt wird,  die Argumentangaben bleiben unverän-
  122. dert.
  123.  
  124. ACHTUNG!
  125. Ich  bin inzwischen dazu übergegangen,  Befehle aus dem Interpreter  zu 
  126. entfernen.  Es handelt sich dabei ausnahmslos um Kommandos,  die  durch 
  127. andere einfach nachgebildet werden können (z.B.  hide). Der Grund liegt 
  128. einmal  in  der  Ersparnis von Speicher.  Das Programm  belegt  in  der 
  129. jetzigen Form mit Variablen und Pufferbereichen fast 100kB RAM. Es sind 
  130. bereits  Leute  gekommen,  die wegen  dieses  Umfangs  Speicherprobleme 
  131. bekommen haben. Zweitens hat die Vielfalt der Kommandos nicht besonders                                      -5-
  132.  
  133.  
  134. zur Übersichtlichkeit beigetragen.  Es wurden aber wirklich nur doppelt 
  135. gemoppelte Kommandos entfernt. Die Beschreibung enthält an den relevan-
  136. ten Stellen Hinweise, wie man diese Befehle nachbilden kann!
  137.  
  138. Bei  der folgenden Befehlsbeschreibung sind '[  ]'-Argumentangaben  als 
  139. optional zu verstehen und '< >' als zwingend. Sind Argumente z.B. durch 
  140. '(s)' als Plural gekennzeichnet,  bedeutet dies,  daß mehrere Argumente 
  141. angegeben werden können (nicht müssen).
  142.  
  143. Es  gibt  eine ganze Reihe von Fehlermeldungen,  die  es  dem  Benutzer 
  144. erleichtern  sollen,  einen Fehler bzw.  ein aufgetretenes  Problem  zu 
  145. erkennen. Durch die Verbindung einer Fehlermeldung mit einer Fehlernum-
  146. mer,  ist  der  Benutzer von Batchdateien in der  Lage,  auf  bestimmte 
  147. Situationen individuell zu reagieren.
  148.  
  149. Eine  weitere  Fähigkeit  des Interpreters soll auch  schon  an  dieser 
  150. Stelle  Erwähnung  finden.  Man  kann von  ihm  aus  externe  Programme 
  151. aufrufen.  Kann  ein  eingegebenes Kommando nicht als  interner  Befehl 
  152. erkannt  werden,  wird versucht,  ob es ein Programm gibt,  daß  diesem 
  153. Befehlsnamen  entspricht.  Ist dies der Fall,  wird es aufgerufen  (das 
  154. bezieht  sich auf TOS,  TTP und PRG-Dateien).  Programme,  die sich  im 
  155. aktuellen Verzeichnis befinden und die aufgerufen werden sollen, müssen 
  156. nicht  mit  ihrem vollen Namen bezeichnet werden!  Es  wird  das  erste 
  157. Programm gestartet,  daß mit dem eingegebenen Teilstring  übereinstimmt 
  158. und eine der obigen Extensions hat.
  159. Die  Einschränkung  mit  dem aktuellen Verzeichnis  besteht  ab  dieser 
  160. Version  nicht  mehr,  d.h.  auch  Programme aus  anderen  Ordnern  und 
  161. Laufwerken können via Teilstring aufgerufen werden!  Für die notwendige 
  162. Eindeutigkeit muß der Benutzer allerdings selber sorgen.
  163. Soll  z.B.  ein Programm 'programm.tos' aufgerufen  werden,  genügt  es 
  164. 'programm'  oder  sogar  noch weniger  Zeichen  einzugeben,  um  es  zu 
  165. starten.
  166. Es  versteht sich wohl von selbst,  daß eingegebene Argumente an  diese 
  167. Programme weitergegeben werden.
  168. Der  Benutzer kann mithilfe des path-Befehls bestimmte Suchpfade  ange-
  169. ben,  die der Interpreter auf der Suche nach einem bestimmten  Programm 
  170. abklappert.
  171.  
  172. In  den Vorgängerversionen des Interpreters wurde nach dem  Lauf  eines 
  173. '.PRG'-Programms  der  Bildschirm  gelöscht.  Dieses  Verhalten  fanden 
  174. allerdings einige Leute nicht so besonders toll.  Aus diesem Grund wird 
  175. nun keine Löschung mehr vorgenommen.  Der Cursor befindet sich nach dem 
  176. Programmlauf in der letzten Zeile (die allerdings gelöscht wird). Ob es 
  177. nun  unter  Umständen  zu kleineren Unschönheiten  mit  dem  Mauszeiger 
  178. kommt, bleibt abzuwarten.
  179.                                     -6-
  180.  
  181.  
  182. Die Befehle in der folgenden Beschreibung sind durch ein  vorangestell-
  183. tes '->' und eine einfache Unterstreichung kenntlich gemacht.
  184.  
  185. Da es zahlreiche Kommandos gibt, die nur durch eine Abkürzung repräsen-
  186. tiert sind (z.B.  cp für copy), werden dort die vollständige Ausschrei-
  187. bung  der  Kommandos angegeben.  Dies scheint mir für  ein  einfacheres 
  188. Einprägen der Befehle förderlich zu sein.
  189.  
  190. Durch häufigen Gebrauch von Beispielen habe ich versucht,  die  Befehle 
  191. und  ihre  Funktion transparenter zu machen.  Einige  dieser  Beispiele 
  192. enthalten Hinweise, die zu einer bequemeren Handhabung des Interpreters 
  193. führen  sollen.  Es  ist  daher nicht ganz  sinnlos,  sich  mit  diesem 
  194. zusätzlichen Geschwafel auseinanderzusetzen.
  195.  
  196.  
  197.                                     -7-
  198.  
  199. 3 Allgemeine Befehle
  200.  
  201. -> ?ok
  202. Diesen Befehl und den zugehörigen File checksum.dat gibt es nicht mehr. 
  203. Es  konnte praktisch jeder die Zahl in der angesprochenen Datei  ändern 
  204. und  so  eine Warnung provozieren,  also hat das Kommando  seinen  Sinn 
  205. leider  verfehlt.  Ich möchte an dieser Stelle noch auf die  inzwischen 
  206. doch  recht  zahlreich  vorhandenen  PD-Programme  hinweisen,  die  ein 
  207. Erkennen von Viren zulassen. Die Verwendung eines solchen Programms sei 
  208. jedem nur wärmstens empfohlen!
  209.  
  210. -> bell
  211. Dieser  Befehl läßt den ATARI einmal 'klingeln'.  Man kann  mit  diesem 
  212. Kommando z.B.  das Ende einer Batchfilebearbeitung akustisch  hervorhe-
  213. ben.
  214.  
  215. -> cat <file(s)>
  216. (kompletter Name: concatenate)
  217. Gibt  den  Inhalt eines ASCII-Text-Files auf den  Bildschirm  aus.  Die 
  218. Ausgabe  kann jederzeit mit ^Z abgebrochen werden.  Der Befehl  erlaubt 
  219. es, mehrere Dateien anzugeben.
  220. Beim Versuch z.B.  eine Programmdatei auszugeben,  bricht natürlich das 
  221. Chaos aus!
  222. Durch  F1  (damit  ist die Funktionstaste  gemeint)  kann  die  Ausgabe 
  223. angehalten  werden,  durch  erneuten  Druck  auf  F1  wird  sie  wieder 
  224. fortgesetzt.
  225. Man  kann  dieses Kommando übrigens auch auf andere  Verzeichnisse  und 
  226. Laufwerke anwenden!
  227. BEISPIEL:
  228.  
  229.                                 cat *.c
  230.  
  231. Hier werden alle 'C'-Dateien ausgegeben.
  232.  
  233.                     cat command.txt test.txt *.dat
  234.  
  235. Es  wird  erst  der  File  'command.txt'  ausgegeben,  dann  die  Datei 
  236. 'test.txt' und zum Schluß alle 'dat'-Files.
  237.  
  238.                             cat /test/*.dat
  239.  
  240. Ausgabe aller 'dat'-Files, die sich im Ordner 'test' befinden.
  241.  
  242. -> cd <directory>
  243. (kompletter Name: change directory)
  244. Dieses Kommando wird zum Wechseln von Verzeichnissen benutzt.                                     -8-
  245.  
  246.  
  247. Soll zu einem Ordner gewechselt werden, der sich im aktuellen Directory
  248. befindet,  genügt es,  die ersten Buchstaben (bis Eindeutigkeit  herge-
  249. stellt ist), einzugeben.
  250. Es  wird  immer  das erste Verzeichnis  angesprungen,  daß  mit  diesem 
  251. Teilstring übereinstimmt.
  252. Es ist ab und zu schon vorgekommen,  daß beim Wechseln von  Laufwerken, 
  253. zwar so getan wird,  als hätte ein solcher stattgefunden, man sich aber 
  254. in  Wirklichkeit  immer  noch an der  gleichen  Stelle  befindet.  Hier 
  255. scheint es ein Problem im TOS zu geben (GEMDOS-Routine Dsetdrv). Dieses 
  256. Verhalten habe ich allerdings bisher nur bei Floppylaufwerken  beobach-
  257. ten  können.  Ramdisks  oder  verschiedene  Partitions  einer  Harddisk 
  258. bereiten keine Probleme. Ich möchte mit diesem Hinweis allerdings nicht 
  259. sagen, daß jetzt dauernd mit dieser Nichtwechselei zu rechnen ist, also 
  260. keine Panik!
  261. BEISPIEL:
  262.  
  263.                                cd subdir
  264.  
  265. Wechselt vom aktuellen Verzeichnis in das Unterverzeichnis 'subdir'.
  266.  
  267.                               cd a:bingo
  268.  
  269. Wechselt das Laufwerk,  vom aktuellen Laufwerk auf Laufwerk A, und geht 
  270. dort in den Ordner 'bingo'.
  271.  
  272.                                  cd ..
  273.  
  274. Vom  aktuellen Unterverzeichnis wird in das Verzeichnis  gegangen,  daß 
  275. sich eine Ebene über dem Unterverzeichnis befindet.  Verhält sich  also 
  276. analog zu einem Anklicken der oberen linken Fensterecke unter GEM.
  277.  
  278.                            cd / (oder cd \)
  279.  
  280. Wechselt in das Wurzelverzeichnis des aktuellen Laufwerks.
  281.  
  282.                                  cd d:
  283.  
  284. Wechselt  nur das Laufwerk.  Die Eingabe von 'd:' bewirkt übrigens  das 
  285. gleiche (s.u.).
  286.  
  287. -> chmod <file> <mode> ... <file> <mode>
  288. (kompletter Name: change mode)
  289. Dieser Befehl kann zur Änderung von Fileattributen benutzt werden.  Bei 
  290. den  Fileangaben kann mit '*' gearbeitet werden.  'mode'  repräsentiert 
  291. eine Integerzahl, die das neue Attribut darstellt.
  292. Man sollte bei Verwendung dieses Befehls etwas Vorsicht walten  lassen.                                      -9-
  293.  
  294.  
  295. Ich  habe  z.B.  mal aus einem normalen auto.com-File  ein  Volumelabel 
  296. gemacht.  Leider  hat die Rückführung in eine normale Datei nicht  mehr 
  297. funktioniert.  Das  Betriebssystem ist hier leider ziemlich  restriktiv 
  298. ausgelegt!
  299. Es ist mir bis jetzt auch noch nicht gelungen,  Verzeichnissen z.B. das 
  300. read  only-Attribut  zu  vergeben  (was  ja  als  Schutzfunktion  recht 
  301. nützlich  wäre).  Irgendwie hat man auf solche Einträge keinen  Zugriff 
  302. via Fattrib().
  303. An dieser Stelle ist eine Zusammenstellung der Bits und ihrer Bedeutung 
  304. wohl ganz hilfreich:
  305.      Bit 0: Datei ist schreibgeschützt
  306.      Bit 1: Datei ist versteckt (wenigstens ein bißchen)
  307.      Bit 2: es handelt sich um eine Systemdatei (habe bis jetzt noch
  308.             keine gefunden)
  309.      Bit 3: Volumelabel (kann man z.B. beim Formatieren angeben)
  310.      Bit 4: Verzeichnis
  311.      Bit 5: ist das Archivbit (Kennung wc)
  312. Um  die  entsprechende Eigenschaft zu besitzen muß  das  jeweilige  Bit 
  313. gesetzt sein!
  314. BEISPIEL:
  315.  
  316.                              chmod *.prg 1
  317.  
  318. Allen  PRG-Dateien  im  aktuellen Ordner wird  das  nur  lesen-Attribut 
  319. verliehen.
  320.  
  321.                          chmod *.prg 1 *.txt 0
  322.  
  323. PRG-Files werden mit dem nur lesen-Attribut,  TXT-Dateien erhalten  das 
  324. normale Schreiben/Lesen-Attribut.
  325.  
  326. -> cls
  327. (kompletter Name: clear screen)
  328. Es wird mit diesem Befehl nur der Bildschirm gelöscht.
  329.  
  330. -> cmp <fileA> <fileB>
  331. (kompetter Name: compare)
  332. Vergleicht den Inhalt zweier Files miteinander. Ist dieser gleich, wird 
  333. nichts zurückgemeldet, ansonsten ein files differ.
  334. Es ist bei diesem Befehl möglich,  sich auf andere Laufwerke und andere 
  335. Ordner zu beziehen.
  336. Wem  es  ab  und  zu schon passiert  ist,  daß  ein  scheinbar  korrekt 
  337. abgelaufener  Kopiervorgang  doch nicht so  recht  funktionierte,  wird 
  338. diesen Befehl zu schätzen wissen.
  339.                                     -10-
  340.  
  341. BEISPIEL:
  342.  
  343.                     cmp c:command.txt a:command.txt
  344.  
  345. Vergleich der beiden Dateien, die sich auf unterschiedlichen Laufwerken 
  346. befinden.
  347.  
  348.                       cmp command.txt command.txt
  349.  
  350. Dieser Befehl wird nicht ausgeführt,  da davon auszugehen ist,  daß  es 
  351. sich um ein und denselben File handelt.
  352.  
  353. -> compress <file(s)>
  354. Dieses  Kommando  komprimiert Dateien.  Die Ausgabefiles  besitzen  die 
  355. Extension 'CPR'.
  356. Die ursprünglichen Files werden mit expand wieder erzeugt.
  357. Das  Ergebnis  der  Kompaktierung ist alles in  allem  nicht  besonders 
  358. berauschend, aber ein bißchen schaut schon dabei heraus.
  359. Sollte  jemand  auf  eine wirklich  effektiv  arbeitende  Kompaktierung 
  360. angewiesen  sein,  so möchte ich diesen auf Programme wie ARC oder  ZOO 
  361. verweisen.
  362. Ältere  Versionen  des Kommandointerpreters konnten  nur  reine  ASCII-
  363. Textdateien packen. Diese Einschränkung gilt nicht mehr. Dieser Vorteil 
  364. hat allerdings einen kleinen Haken,  redundante Texte wie z.B. Leerzei-
  365. len,  die  nur Blanks enthalten oder Zeilen,  die mit Blanks  aufhören, 
  366. werden  nicht mehr entfernt!  Nach der Erweiterung mit expand  hat  man 
  367. also wieder den ursprünglichen File vor sich.
  368. Das  Verfahren,  das  hinter diesem Kommando steht  ist  übrigens  ganz 
  369. einfach: es werden alle Strings, die aus mehr als zwei gleichen Zeichen 
  370. bestehen, zu drei Byte-Strings zusammengefaßt.
  371. Besonders  gute  Opfer  für diesen Befehl sind mit  dem  Editor  TEMPUS 
  372. erstellte Dateien.  Da dieser leider nicht in der Lage ist,  vernünftig 
  373. mit  TAB-Zeichen  umzugehen  (und  stattdessen  das  idiotische  ATARI-
  374. spezifische  Zeichen bzw.  die eingestellte Anzahl von  BLANKs  macht), 
  375. bringt hier die Komprimierung schon einige Bytes an Ersparniss.  Sollte 
  376. irgendwann  einmal  eine  Version  dieses,  ansonsten  wirklich  guten, 
  377. Editors herauskommen,  die eine brauchbare Einbindung und  Verarbeitung 
  378. von TAB beinhaltet,  bringt die Komprimierung natürlich auch nicht mehr 
  379. diese Ergebnisse.
  380. BEISPIEL:
  381.  
  382.                          compress beispiel.txt
  383.  
  384. Kompaktiert   die  Datei  'beispiel.txt'.   Der  erzeugte  File   heißt 
  385. 'beispiel.cpr'. 'beispiel.txt' selbst wird nicht verändert!
  386.                                     -11-
  387.  
  388.  
  389. -> cp <fileA> <fileB>
  390. (kompletter Name: copy)
  391. Dieser Befehl wird zum Kopieren von Dateien benutzt. 'fileA' wird dabei 
  392. in 'fileB' kopiert.
  393. Der Befehl ist so ausgelegt,  daß in weitem Umfang auf andere Laufwerke 
  394. und  Verzeichnisse  zugegriffen werden kann.  Die  Verwendung  von  '*' 
  395. bietet ein zusätzliches Maß an Flexibilität.
  396. Während  dem Kopiervorgang wird angezeigt,  welche Files gerade  dupli-
  397. ziert werden.
  398. Sicherheitshalber  sollte beim Kopieren in oder aus Verzeichnissen  der 
  399. vollständige Pfad angegeben werden!
  400. Wird  nur ein Argument angegeben,  so ersetzt das Programm  das  zweite 
  401. durch '*.*'.
  402. BEISPIEL:
  403.  
  404.                     cp c:command.txt d:\subdir\*.*
  405.  
  406. In  diesem Beispiel wird der File 'command.txt' vom Hauptdirectory  auf 
  407. Laufwerk C in das Subdirectory 'subdir' auf Laufwerk D kopiert.
  408. Es kann übrigens statt '\' auch '/' verwendet werden.
  409.  
  410.                               cp *.prg a:
  411.  
  412. Kopiert alle PRG-Dateien des aktuellen Verzeichnisses auf Laufwerk A.
  413.  
  414.                         cp *.* d:/allefiles/*.*
  415.  
  416. Hier  werden  alle  Files  des  aktuellen  Ordners  in  das   Directory 
  417. 'allefiles' auf Laufwerk D kopiert.
  418.  
  419.                              cp c:xyz.dat
  420.  
  421. Der File 'xyz.dat' wird vom Laufwerk C in das Verzeichnis  kopiert,  in 
  422. dem man sich gerade befindet.  Der Name der neuen Datei ist dabei  auch 
  423. wieder 'xyz.dat'.
  424.  
  425. -> crsoff
  426. (kompletter Name: cursor off)
  427. Schaltet den Cursor aus.
  428.  
  429. -> crson
  430. (kompletter Name: cursor on)
  431. Schaltet den Cursor ein.
  432.  
  433. -> crypt <keyA> <keyB> <fileA> <fileB>
  434. Möchte  man einen File ver- bzw.  entschlüsseln,  so kann  dazu  dieser                                      -12-
  435.  
  436.  
  437. Befehl benutzt werden.  Um diesen Kodierungsvorgang zu starten,  ist es 
  438. notwendig,  zwei Zahlen ('keyA' und 'keyB') einzugeben.  Nur mit diesen 
  439. beiden Zahlen kann ein verschlüsselter File wieder dekodiert werden!
  440. 'fileA' stellt den zu ver- /entschlüsselnden File dar,  'fileB'  reprä-
  441. sentiert die Ergebnisdatei.
  442. ACHTUNG, im Laufe der Zeit (oder besser: der Interpreterversionen) sind 
  443. an diesem Programmteil immer wieder Änderungen vorgenommen  worden!  Es 
  444. ist daher für Benutzer dieses Befehls notwendig,  festzustellen ob  ein 
  445. Entschlüsseln von Dateien,  die mit einer älteren Version verschlüsselt 
  446. worden  sind,  noch  möglich ist.  Kann dies  nicht  mehr  durchgeführt 
  447. werden, muß man den fraglichen File erst mit der älteren Version wieder 
  448. in seinen Urzustand bringen!
  449. Wie sicher die Kodierung ist,  mag jeder selbst entscheiden. Die beiden 
  450. Schlüssel sind vom Typ 'long',  damit ergeben sich schon einige  Kodie-
  451. rungsmöglichkeiten. Es können übrigens auchg negative Schlüssel benutzt 
  452. werden.
  453. BEISPIEL:
  454.  
  455.                 crypt 123 4711 command.txt command.crp
  456.  
  457. Die   Datei  'command.txt'  wird  in  verschlüsselter  Form   im   File 
  458. 'command.crp'  abgelegt.  Soll aus 'command.crp' wieder der  entschlüs-
  459. selte File entstehen, muß einfach
  460.  
  461.                 crypt 123 4711 command.crp command.ent
  462.  
  463. eingegeben werden.  'command.ent' repräsentiert nun den entschlüsselten 
  464. File.  Es  hätte  natürlich auch irgendein  anderer  Dateiname  gewählt 
  465. werden können.
  466. Der Urfile (in diesem Fall 'command.txt') wird übrigens weder  gelöscht 
  467. noch sonst irgendwie verändert!
  468.  
  469. -> date [dd.mm.yy]
  470. Ausgabe/Setzen des Datums.
  471. Wird kein Argument angegeben,  wird einfach das Systemdatum ausgegeben, 
  472. sonst erfolgt eine Übernahme des Arguments.
  473. BEISPIEL:
  474.  
  475.                               date 1.5.88
  476.  
  477. Setzt das Systemdatum auf den 1. Mai 1988.
  478.  
  479.                                  date
  480.  
  481. Hier wird nur das Systemdatum ausgegeben.
  482.                                     -13-
  483.  
  484.  
  485. -> defkey <f-key> <string>
  486. (kompletter Name: define key)
  487. Belegung der Funktionstasten mit einem Befehl,  der bei Drücken  dieser 
  488. Tasten ausgeführt wird.
  489. 'f-key'  umfaßt  den  Bereich von 1 bis 20 (na ja,  es  gibt  halt  nur 
  490. zwanzig  Funktionstasten),  wobei ab Nummer 11 die  geshifteten  Tasten 
  491. gemeint sind, also wird z.B. Taste 14 duch SHIFT-F4 repräsentiert.
  492. BEISPIEL:
  493.  
  494.                           defkey 1 dir *.prg
  495.  
  496. Jeder  Druck  auf  F1 führt jetzt zum Aufzeigen  aller  PRG-Dateien  im 
  497. aktuellen Verzeichnis.
  498. Die Hauptanwendung für diese Funktion dürfte allerdings im Aufrufen von 
  499. externen Programmen mit bestimmten Parametern liegen:
  500.  
  501.                             defkey 12 x.prg
  502.  
  503. F12 (SHIFT-F2) führt nun zum Starten des Programms 'x.prg'.
  504.  
  505. -> device
  506. Ausgabe der angemeldeten Laufwerke.
  507.  
  508. -> df
  509. (kompletter Name: disk free)
  510. Dieses Kommando zeigt den freien Speicherplatz des aktuellen  Laufwerks 
  511. an.
  512.  
  513. -> dir [filedeskriptor(en)]
  514. (kompletter Name: directory)
  515. Aufzeigen  aller  (bestimmter) Dateien eines Ordners.  Es  können  auch 
  516. Laufwerksbezeichnungen bzw. Ordner angegeben werden.
  517. Wird  kein  Deskriptor angegeben,  werden alle  Files  ausgegeben.  Bei 
  518. Angabe  mehrerer Deskriptoren,  werden sukzessive  alle  entsprechenden 
  519. Dateien aufgezeigt.
  520. Zusätzlich  zu den Filename erfolgt eine Ausgabe von  Erstellungsdatum, 
  521. Größe und Fileattribut.
  522. Die Attribute werden sowohl in abgekürzter Form,  als auch als Integer-
  523. wert (in Klammern) ausgegeben.  Die Attributabkürzungen und ihre Bedeu-
  524. tung:
  525.  
  526.           - rw = Read and Write
  527.           - ro = Read Only
  528.           - hi = HIdden
  529.           - sf = System File
  530.           - vl = Volume Label                                     -14-
  531.  
  532.  
  533.           - di = DIrectory
  534.           - wc = Written and Closed
  535.  
  536. Natürlich kann ein File mehrere Attribute haben (z.B.  wc und  hi).  Es 
  537. werden dann alle aufgeführt.
  538. BEISPIEL:
  539.  
  540.                                   dir
  541.  
  542. Ausgabe aller Dateien des aktuellen Verzeichnisses.
  543.  
  544.                                 dir a:
  545.  
  546. Ausgabe aller Files vom aktuellen Ordner auf Laufwerk A.
  547.  
  548.                             dir *.prg a*.*
  549.  
  550. Ausgabe aller PRG-Files und danach aller Dateien, die mit 'a' beginnen.
  551.  
  552.                            dir /megamax/
  553.  
  554. Ausgabe aller Dateien im Verzeichnis 'megamax'.
  555.  
  556. -> echo [string]
  557. Ausgabe  von 'string' auf den Bildschirm.  Wird kein String  angegeben, 
  558. erfolgt nur die Ausgabe einer Leerzeile.
  559. Sinnvoll ist dieses Kommando in Batchfiles.
  560. BEISPIEL:
  561.  
  562.                             echo Na prima!
  563.  
  564. Es wird 'Na prima!' ausgegeben.
  565.  
  566. -> exit
  567. Verlassen des Interpreters und zurück zum Desktop. Das gleiche kann man 
  568. auch durch Drücken von ^C erreichen.
  569.  
  570. -> expand <file(s)>
  571. Dieser  Befehl  stellt  die Umkehrung zu compress  dar.  Er  dient  der 
  572. Wiederherstellung von mit compress behandelter Dateien.  Der  Ergebnis-
  573. file hat die Extension 'EXP'.
  574.  
  575. -> find <file>
  576. Es wird im kompletten Filesystem (also auch in den Unterverzeichnissen) 
  577. nach 'file' gesucht.  Wird eine passende Datei gefunden, wird diese mit 
  578. vorangestelltem Pfadnamen ausgegeben.                                     -15-
  579.  
  580.  
  581. BEISPIEL:
  582.  
  583.                                find *.*
  584.  
  585. Dieses  Kommando würde alle Files eines Laufwerks mit  den  zugehörigen 
  586. Verzeichnisnamen ausgeben.
  587.  
  588.                               find *.prg
  589.  
  590. Dieser  Befehl  gibt alle PRG-Files aus,  die sich  auf  dem  aktuellen 
  591. Laufwerk befinden.
  592.  
  593. -> flags
  594. Ausgabe diverser Programmflags.  Diese Flags werden später,  bzw. immer 
  595. bei  den Befehlen für die sie relevant sind,  noch eingehender  bespro-
  596. chen.
  597. Zuordnung der Kommandos:
  598.  
  599.      "Errorbreak"                  Befehl:errorbreak
  600.      "History"                     Befehl:srhist
  601.      "ß = Beta"                    Befehl:sz
  602.      "Patch change"                Befehl:pchange
  603.      "Show batch commands"         Befehl:text/notext
  604.      "Save history"                Befehl:savehist
  605.      "Print title"                 Befehl:srtitle
  606.      "Expand TAB"                  Befehl:srtab
  607.      "Convert slash"               Befehl:slash
  608.      "Line numbers"                Befehl:numbers
  609.  
  610. Bei  diesen  Flags wird durch on/off angezeigt,  ob  die  Funktion  des 
  611. entsprechenden Befehls aktiviert ist oder nicht.
  612.  
  613. Die folgende Auflistung zeigt die Verbindung von Kommandos,  die  SetUp 
  614. Funktion haben und ihre Representation in der Flag-Liste:
  615.  
  616.      "TAB"                         Befehl:settab
  617.      "Lines per page"              Befehl:lppage
  618.      "Margin"                      Befehl:lpmargin
  619.      "Start page"                  Befehl:page
  620.      "start:"                      Befehl:setlp
  621.      "stop :"                      Befehl:resetlp
  622.  
  623. -> free
  624. Gibt den noch verfügbaren RAM-Speicherplatz aus.
  625.  
  626.                                     -16-
  627.  
  628. -> head <file(s))
  629. Dieser  Befehl gibt die ersten zehn Zeilen der/des  angegebenen  ASCII-
  630. Files aus. Damit kann man sich auf recht einfache Weise einen Überblick 
  631. über bestimmte Fileinhalte verschaffen.
  632. BEISPIEL:
  633.  
  634.                                head *.c
  635.  
  636. Ausgabe der ersten zehn Zeilen aller 'c'-Dateien die sich im  aktuellen 
  637. Ordner befinden.
  638.  
  639.                            head e:/subdir/datei.txt
  640.  
  641.   Ausgabe  der ersten zehn Zeilen von Datei 'datei.txt',  die  sich  im 
  642. Ordner 'subdir' auf Laufwerk E befindet.
  643.  
  644. -> help [command(s)]
  645. Wird  dieser Befehl ohne Argument(e) eingegebe oder einfach  die  HELP-
  646. Taste  gedrückt,  erfolgt eine Auflistung aller verfügbaren  Kommandos. 
  647. Diese  Auflistung  ist (leider) nicht  alphabetisch  geordnet,  sondern 
  648. entspricht der Reihenfolge in der neue Befehle dem Programm hinzugefügt 
  649. worden  sind.  Das ist zwar nicht besonders schön aber zum  Verschaffen 
  650. eines  kurzen Überblicks dürfte es wohl genügen und  die  programmtech-
  651. nischen Änderungen zum Ausgeben einer geordneten Liste,  steht wohl  in 
  652. keinem sinnvollen Verhältnis zum Nutzen.
  653. Wird allerdings ein Argument (oder mehrere) angegeben,  so erfolgt  die 
  654. Ausgabe einer Kurzbeschreibung.
  655. Diese Beschreibungen befinden sich in der Datei command.hlp,  die  sich 
  656. immer  in  dem Verzeichnis befinden muß,  von dem aus  der  Kommandoin-
  657. terpreter aufgerufen wurde.
  658. BEISPIEL:
  659.  
  660.                               help dir rm
  661.  
  662. Es  werden die Kurzbeschreibungen zu den Kommandos dir und rm  ausgege-
  663. ben.
  664.  
  665. -> hide <file>
  666. Wolltte  man einen File so kennzeichnen,  daß er auf dem Desktop  nicht 
  667. mehr erschien,  konnte dies in älteren Interpreterversionen mit  diesem 
  668. Befehl bewerkstelligt werden. Dieses Kommando gibt es nicht mehr!
  669. Möchte jemand trotzdem Dateien verstecken,  kann er dies unter  Verwen-
  670. dung von chmod tun.  Es muß bei den Dateien Bit 1 (dezimal = 2) gesetzt 
  671. sein,  um eine hide-Kennzeichnung zu erreichen, bzw. muß dieses Bit bei 
  672. normal sichtbaren Dateien gelöscht sein.  Das ganze mit dem  Verstecken 
  673. funktioniert allerdings nur,  wenn wirklich nur dieses eine Bit gesetzt                                      -17-
  674.  
  675.  
  676. ist!
  677. Um  eine Datei entsprechend zu kennzeichnen,  muß man also  in  Zukunft 
  678. "chmod <datei> 2" verwenden.
  679. Ich habe dieses Kommando entfernt,  da es einige Leute gab,  die lieber 
  680. ein  kürzeres Programm haben wollten und dafür  auf,  zugegebenermaßen, 
  681. überflüssige Befehle zu verzichten bereit waren.
  682.  
  683. -> inverse
  684. Die  Bildschirmdarstellung wird invertiert,  d.h.  war vor Eingabe  des 
  685. Befehls die normale Darstellung,  also schwarz auf weiß,  aktiv, so ist 
  686. die  Darstellung  nun  weiße  Schrift  auf  schwarzem  Grund.  War  die 
  687. Darstellung weiß auf schwarz,  wird wieder auf die normale  Einstellung 
  688. umgeschaltet.
  689. Es gibt einige Programme,  die für eine Invertierung der Bildschirmdar-
  690. stellung  sorgen ohne den Originalzustand wieder  herzustellen.  Dieses 
  691. Manko wird durch inverse aufgehoben.
  692.  
  693. -> keyboard
  694. Ausgabe  der  Kommandos,  die zum Editieren der Eingabe  zur  Verfügung 
  695. stehen.
  696.  
  697. -> keys
  698. Dieser  Befehl sorgt für eine Auflistung der  Funktionstastenbelegungen 
  699. (vgl. defkey).
  700.  
  701. -> lock
  702. Möchte  man  den Rechner eine Weile angeschaltet  stehen  lassen,  aber 
  703. gleichzeitig Sorge dafür tragen,  daß ihn kein anderer benutzt, so kann 
  704. dies mit lock gemacht werden.
  705. Nach Eingabe des Kommandos wird der Benutzer aufgefordert, ein Passwort 
  706. einzugeben. Zur Bestätigung muß diese Eingabe wiederholt werden. War es 
  707. jedesmal  das gleiche Wort,  meldet der Rechner,  daß er  abgeschlossen 
  708. (locked)  ist.  Will  man nun weiterarbeiten,  muß einfach  erneut  das 
  709. Passwort  eingegeben werden.  Ist es falsch,  erfolgt  keine  Reaktion, 
  710. sonst erscheint wieder der normale Prompt.
  711. Ein Knacken des Schutzes kann übrigens durch die RESET-Taste oder durch 
  712. einfaches Aus-/Einschalten erfolgen (klar, oder?).
  713.  
  714. -> lp <file(s)>
  715. (kompletter Name: lineprinter)
  716. Soll  eine  ASCII-Datei  (oder mehrere) auf  einem  Drucker  ausgegeben 
  717. werden,  geschieht dies durch dieses Kommando.  Hat man einen  Drucker-
  718. spooler in Betrieb, ist das eine recht nette Angelegenheit.
  719. Außerdem gibt es bei Verwendung von lp keine Probleme mit  TAB-Zeichen, 
  720. da  sie  korrekt expandiert werden (wenn gewünscht).  Es  ist  außerdem 
  721. möglich,  eine Titelseite auszugeben und vor dem eigentlichen  Ausdruck                                      -18-
  722.  
  723.  
  724. und nach dessen Abschluß, eine Steuersequenz an den Drucker zu schicken 
  725. (vgl. auch settab, srtitle, setlp und resetlp).
  726. Ein Stoppen des Druckvorgangs kann jederzeit mit ^Z ausgelöst werden!
  727. BEISPIEL:
  728.  
  729.                             lp command.txt
  730.  
  731. Ausdruck der Datei 'command.txt'.
  732.  
  733. -> lpmargin [intvalue]
  734. (kompletter Name: lineprinter margin)
  735. Anzahl  der Blanks,  die bei einem Ausdruck vor der eigentlichen  Zeile 
  736. kommen. Fehlt das Argument, ist diese Funktion ausgeschaltet.
  737.  
  738. -> lppage [intvalue]
  739. (kompletter Name: lineprinter page)
  740. Anzahl  der  Zeilen pro Seite bei einem Ausdruck.  Wird  kein  Argument 
  741. angegeben, ist diese Funktion ausgeschaltet.
  742. Bei eingeschalteter Funktion,  wird jeweils nach Erreichen der  Zeilen-
  743. zahl ein Seitenvorschub durchgeführt.
  744.  
  745. -> ls [filedeskriptor(en)]
  746. (kompletter Name: list short)
  747. Dieser  Befehl  ist eine Abart von dir.  Dort  wird  eine  ausführliche 
  748. Informationsfolge  zu jedem File mit ausgegeben.  Dies unterbleibt  bei 
  749. ls. Hier werden nur die Datei- bzw. Ordnernamen aufgelistet.
  750.  
  751. -> merge <fileA> <fileB>
  752. Dieses Kommando wird zur Verbindung von zwei ASCII-Files benutzt. Dabei 
  753. wird 'fileB' an 'fileA' angehängt. 'fileB' wird nicht modifiziert!
  754. 'fileA' und 'fileB' dürfen nicht die gleiche Datei darstellen, d.h. der 
  755. Befehl "merge command.txt command.txt" würde nicht funktionieren!
  756.  
  757. -> mkdir <dirname>
  758. (kompletter Name: make directory)
  759. Dieser Befehl erzeugt einen neuen Ordner.  Man sollte allerdings  nicht 
  760. vergessen,  daß nur eine bestimmte Verzeichnistiefe zulässig ist.  Auch 
  761. das '40-Ordner-Problem' sollte man im Auge behalten.
  762. Nach der Generierung des neuen Verzeichnisses,  findet man dort bereits 
  763. zwei Einträge,  nämlich '..' und '.'. '.' stellte einen Verweis auf den 
  764. Ordner  dar,  '..' ist ein Verweis auf das darüberliegende  Verzeichnis 
  765. (vgl auch "cd ..").
  766.                                     -19-
  767.  
  768. BEISPIEL:
  769.  
  770.                              mkdir schrott
  771.  
  772. Es  wird  im aktuellen Directory das  neue  Unterverzeichnis  'schrott' 
  773. eingerichtet.  Mit  "cd  schrott" und dir kann  man  anschauen,  welche 
  774. Dateien dabei erzeugt worden sind ('.' und '..', welche sonst?).
  775.  
  776. -> more <file(s)
  777. Ähnlich  dem  cat-Kommando können mit diesem Befehl eine  oder  mehrere 
  778. ASCII-Dateiinhalte  auf den Bildschirm ausgegeben  werden.  Der  Unter-
  779. schied zu cat liegt darin,  daß immer nur eine Bildschirmseite ausgege-
  780. ben wird. Dann wird angehalten und auf das Drücken der SPACE-Taste bzw. 
  781. von  RETURN gewartet.  Wird SPACE betätigt,  erfolgt die Ausgabe  einer 
  782. neuen Seite, bei RETURN wird zeilenweise fortgefahren.
  783. Die Ausgabe kann jederzeit mit ^Z abgebrochen werden.
  784. Das  Kommando  erlaubt den Zugriff auf Dateien,  die  sich  in  anderen 
  785. Ordnern / auf anderen Laufwerken befinden.
  786. BEISPIEL:
  787.  
  788.                               more *.pas
  789.  
  790. Es werden sämtliche Pascalsourcefiles ausgegeben (ich gehe dabei  davon 
  791. aus, daß die Extension 'PAS' sich auf PASCAL bezieht).
  792.  
  793.                         more c:/duplikat/com.c
  794.  
  795. Ausgabe  des  Files  'com.c' der sich auf  Laufwerk  C  im  Verzeichnis 
  796. '/duplikat/' befindet.
  797.  
  798. -> mouseoff
  799. Der Sinn dieses und des nächsten Befehls mag auf den ersten Blick nicht 
  800. einleuchten, aber es steckt trotzdem einer dahinter.
  801. Das Kommando schaltet den Mauszeiger aus.  Normalerweise ist im  Inter-
  802. preter  dieser Zeiger sowieso nicht sichtbar.  Es gibt aber  Programme, 
  803. die  diesen  Zeiger sehr wohl benutzen,  und hängt sich nun  solch  ein 
  804. Programm auf, kann es unter Umständen zu einem herrlichen Durcheinander 
  805. mit der Maus kommen.
  806. Wird z.B.  ein Programm mit der Extension PRG aufgerufen,  schaltet der 
  807. Interpreter  automatisch  den Mauszeiger vor  dem  Programmaufruf  ein. 
  808. Schaltet dieses Programm nun diesen Zeiger wieder aus und ihn auch  bei 
  809. erreichen  des  Programmendes nicht wieder ein  (wie  es  gentlemanlike 
  810. wäre),  so  gibt  es Probleme,  da der Interpreter nach  dem  Lauf  des 
  811. Programms den Zeiger abschaltet,  und zwar unabhängig davon, ob er ein- 
  812. oder ausgeschaltet war.
  813. Ich  nehme  mal an,  daß die Problematik bis jetzt noch nicht  so  ganz                                      -20-
  814.  
  815.  
  816. einleuchtet,  schließlich will man ja, daß der Mauszeiger verschwindet. 
  817. Leider ist das GEM aber so organisiert,  daß es sich merkt, wie oft der 
  818. Zeiger ausgeschaltet worden ist,  d.h.  wird er zweimal  ausgeschaltet, 
  819. muß er, um wieder sichtbar zu werden, auch wieder zweimal eingeschaltet 
  820. werden.  Der Interpreter hat nun aber keine Ahnung,  wie oft der Zeiger 
  821. ausgeschaltet wurde.  Der Benutzer sollte nun selbst für eine Korrektur 
  822. des Problems sorgen.  Dies ist notwendig, wenn mit Anwendungen gearbei-
  823. tet wird, die den Mauszeiger verwenden. Es kann sonst passieren, daß in 
  824. einem solchen Programm,  in dem die Maus gebraucht wird (z.B.  ein GEM-
  825. Editor),  keine  auftaucht.  Es macht nicht viel Spaß,  jetzt  wie  ein 
  826. blindes  Huhn herumzuirren,  bis man wieder aus dem Programm  rauskommt 
  827. (wenn man nicht lieber gleich RESET drückt).
  828. Man  sollte  also,  falls das angesprochene  Problem  aufgetaucht  ist, 
  829. solange  den Mauszeiger anschalten (mouseon),  bis er  wieder  sichtbar 
  830. ist.  Dann  gibt  man einmal mouseoff ein und die Welt  ist  wieder  in 
  831. Ordnung.  Normalerweise reicht es übrigens zweimal mouseon  einzugeben. 
  832. Der Aufwand bleibt also in einem vertretbaren Rahmen.
  833.  
  834.  
  835. -> mouseon
  836. Dieser Befehl schaltet den Mauszeiger ein.
  837.  
  838. -> mv <fileA> <fileB>
  839. (kompletter Name: move)
  840. Zum Umbenennen eines Files wird dieses Kommando zur Verfügung gestellt. 
  841. Aus 'fileA ' wird 'fileB'.
  842. mv  kann  mit '*' benutzt werden.  Man sollte  allerdings  ein  bißchen 
  843. aufpassen, da die Möglichkeiten zum Unsinn anstellen nicht zu verachten 
  844. sind.
  845. BEISPIEL:
  846.  
  847.                        mv oldie.dat uroldie.dat
  848.  
  849. Der File 'oldie.dat' wird in den File 'uroldie.dat' umbenannt.
  850.  
  851. -> numbers
  852. Schaltet  ein  Flag  ein/aus,  das  bestimmt,  ob  bei  einem  Ausdruck 
  853. Zeilennummern ausgegeben werden.
  854. flags kann zur Überprüfung der aktuellen Einstellung benutzt werden.
  855.  
  856. -> od <file(s)>
  857. (kompletter Name: out dump)
  858. Möchte  sich der Benutzer bestimmte Dateien in  hexadezimaler  Schreib-
  859. weise anschauen, so kann er dies mit Hilfe dieses Kommandos tun.
  860. Der/die File(s) werden seitenweise auf dem Bildschirm  ausgegeben.  Ein 
  861. Abbruch kann durch Drücken von ^Z erfolgen.                                     -21-
  862.  
  863.  
  864. Der  Befehl  ist  so ausgelegt,  daß auch  auf  andere  Laufwerke  bzw. 
  865. Unterverzeichnisse zugegriffen werden kann.
  866. BEISPIEL:
  867.  
  868.                             od command.txt
  869.  
  870. Gibt die Datei 'command.txt' hexadezimal aus.
  871.  
  872.                         od /megamax/headers/*.h
  873.  
  874. Hexadezimale  Ausgabe  aller  '.h'-Dateien  die  sich  im   Verzeichnis 
  875. '/megamax/headers/' befinden.
  876.  
  877. -> page [intvalue]
  878. Ist  diese  Funktion  eingeschaltet,  wird am  Seitenanfang  bei  einem 
  879. Ausdruck  der Filename und die aktuelle  Seitennummer  ausgegeben.  Das 
  880. Argument gibt die Startseitennummer an.  Bei fehlendem Argument ist die 
  881. Funktion ausgeschaltet.
  882.  
  883. -> path <pfad(e)>
  884. Angabe  eines  Pfades,  der zum Auffinden eines  Programmes  durchsucht 
  885. werden soll. Es können maximal zwanzig Pfade angegeben werden.
  886. Programmnamen  müssen,  falls  sie nicht im  aktuellen  Verzeichnis  zu 
  887. finden  sind,  komplett angegeben werden!  Pfadnamen müssen  durch  '/' 
  888. (bzw. '\') abgegrenzt sein. Dies gilt allerdings auch, wenn es sich nur 
  889. um  Laufwerksnamen  handelt  (z.B.  "path a:/  c:/"),  dann  wird  dort 
  890. allerdings nur im Hauptverzeichnis gesucht.
  891. In  vorhergehenden  Programmversionen erfolgte kein Sprung  in  die  zu 
  892. durchsuchenden Ordner.  Dieses Manko habe ich nun beseitigt.  Dies gilt 
  893. allerdings  nur  für Programme mit der  Extension  '.PRG'!  Ich  sollte 
  894. vielleicht den Grund für diese Einschränkung nennen:
  895. Ich benutze einen bestimmten Ordner zur Aufbewahrung von  Tool-Program-
  896. men,  die  mehr oder weniger die Endungen '.TTP' haben.  Nehme ich  nun 
  897. diesen  Ordner  in  die zu durchsuchenden  Pfade  auf,  wird  zwar  bei 
  898. Auffinden  des Programms in den Ordner gesprungen,  aber die  Argumente 
  899. (in der Hauptsache Files) befinden sich halt nicht dort,  also funktio-
  900. niert  das  ganze nicht.  Da die meisten  Benutzer  GEM-Anwendungen  am 
  901. laufen  haben,  die  z.B.  'RSC'-Dateien nachladen und die  die  Endung 
  902. '.PRG' besitzen, dürfte man mit der Einschränkung leben können.
  903. Selbstverständlich  kann dieser automatische Sprung in den zu  durchsu-
  904. chenden Ordner auch abgeschaltet werden (vgl.  pchange).  Das  Kommando 
  905. verhält sich dann wie in den älteren Interpreterversionen.
  906. Außerdem ist es jetzt auch möglich,  wie im Hauptverzeichnis,  nur noch 
  907. Teilstrings zum Starten eines Programmes einzugeben. Für die Eindeutig-
  908. keit des Aufrufs muß allerdings der Benutzer selber sorgen!
  909. Man  sollt  vielleicht auch noch beachten,  daß mit der Anzahl  der  zu                                      -22-
  910.  
  911.  
  912. durchsuchenden Verzeichnisse auch die Zeit bis zur Auffindung bzw.  bis 
  913. zur Meldung, daß ein Programm nicht gefunden werden kann, steigt!
  914. Die Suche nach einem Programm geschieht in folgender Reihenfolge:
  915.  
  916.      1. wenn ALIAS-Eintrag, dann Umwandlung
  917.      2. wenn mit Pfadangabe, dann Ausführung
  918.      3. wenn in aktuellem Verzeichnis, dann Ausführung
  919.      4. die mit path festgelegten Wege absuchen und ggf. Ausführung
  920.         es wird dabei die Argumentfolge in Reihe abgesucht!
  921.  
  922. Die Bedeutung von ALIAS wird in einem extra Abschnitt erläutert!
  923. Da  ich  kein  rechtes  Vertrauen in  die  Fähigkeiten  des  TOS  habe, 
  924. existiert  beim  Wechseln der Pfade ein  Kontrollmechanismus,  der  bei 
  925. einem  fehlerhaften Ordneransprung eine Warnung  ausgibt.  Dies  sollte 
  926. eigentlich nie der Fall sein,  aber man soll nie nie sagen was das  TOS 
  927. betrifft.
  928. BEISPIEL:
  929.  
  930.                     path /erste/ a:/ c:/oben/unten/
  931.  
  932. Ein externes Programm würde in diesem Fall erst im aktuellen  Verzeich-
  933. nis gesucht werden.  Kann es dort nicht gefunden werden, wird versucht, 
  934. es  im Ordner '/erste/' zu finden.  Ist es auch dort  nicht  vorhanden, 
  935. wird zum Hauptverzeichnis auf Laufwerk A gegangen.  Bei einem  weiteren 
  936. Fehlschlag  wird  nun noch auf Laufwerk C im  Directory  '/oben/unten/' 
  937. gesucht.
  938.  
  939.                                  path
  940.  
  941. Ohne Argumente wird nur der eingestellte Suchpfad ausgegeben.
  942.  
  943. -> pchange
  944. (kompletter Name: path change)
  945. Schaltet den Pfadwechsel des path-Kommandos ein/aus. Mit flags kann die 
  946. aktuelle Stellung überprüft werden. Voreingestellt ist das Wechseln der 
  947. Directories.
  948.  
  949. -> pwd
  950. (kompletter Name: print working directory)
  951. Dieser  Befehl  zeigt den aktuellen Pfad an,  in dem  man  sich  gerade 
  952. befindet.
  953.  
  954. -> reset
  955. Der Rechner führt einen Reset aus.
  956.  
  957.                                     -23-
  958.  
  959. -> resetlp [intvalue(s)]
  960. (kompletter Name: reset lineprinter)
  961. Dieser  Befehl  wurde bereits beim lp-Kommando  erwähnt.  Wird  lp  zum 
  962. Ausdruck  von  Dateien benutzt,  wird vor oder  nach  dem  eigentlichen 
  963. Druckvorgang eine Steuersequenz an den Drucker geschickt (z.B. Schrift-
  964. größe oder ein Initialisierungskommando).
  965. resetlp ist nun für die Sequenz zuständig, die nach dem Ausdruck an den 
  966. Drucker  geschickt wird.  Möchte der Benutzer,  daß keine solche  Folge 
  967. geschickt wird (Defaulteinstellung), muß er einfach resetlp eingeben.
  968. Mit flags kann man sich die aktuell gültige Steuersequenz anschauen.
  969. BEISPIEL:
  970.  
  971.                            resetlp 12 28 64
  972.  
  973. Diese  Sequenz  sorgt nach Abschluß eines Ausdrucks für  einen  Seiten-
  974. vorschub  und  der Umschaltung auf die Grundeinstellung  eines  NEC-P6-
  975. Druckers.
  976.  
  977. -> rm <file(s)>
  978. (kompletter Name: remove)
  979. Zum  Löschen  von Dateien findet dieser Befehl  Verwendung.  Es  können 
  980. damit  sowohl  ganze Filegruppen als auch nur  bestimmte  Einzeldateien 
  981. entfernt werden (Verwendung von Wildcarts ist möglich).
  982. Man  sollte bei Benutzung des Kommandos ein  bißchen  aufpassen,  sonst 
  983. löscht man Dateien, die man eigentlich noch braucht.
  984. Dieser  Befehl erlaubt den Zugriff auf andere Verzeichnisse  und  Lauf-
  985. werke.
  986. Es kann vorkommen,  daß Files vor dem Löschen geschützt sind (Attribut: 
  987. nur  lesbar).  Der  Befehl ist nicht in der  Lage,  solche  Dateien  zu 
  988. entfernen (vgl. auch save und unsave)!
  989. BEISPIEL:
  990.  
  991.                                 rm *.*
  992.  
  993. Hier werden alle Files gelöscht.
  994.  
  995.                          rm *.prg command.txt
  996.  
  997. Hier werden erst alle PRG-Dateien entfernt,  im Anschluß daran der File 
  998. 'command.txt'.
  999.  
  1000.                           rm c:/copy/c_files/
  1001.  
  1002. Auf Laufwerk C werden alle Dateien im Unterverzeichnis '/copy/c_files/' 
  1003. gelöscht.
  1004.                                     -24-
  1005.  
  1006.  
  1007. -> rmdir <dirname>
  1008. (kompletter Name: remove directory)
  1009. Es  kann vorkommen,  daß Ordner entfernt werden sollen.  Der  geeignete 
  1010. Befehl  findet sich in rmdir.  Der zu löschende Ordner  muß  allerdings 
  1011. leer sein!
  1012. BEISPIEL:
  1013.  
  1014.                              rmdir schrott
  1015.  
  1016. Diese Eingabe bewirkt ein Entfernen von Directory 'schrott'.
  1017.  
  1018. -> save <file(s)>
  1019. Files,  auf  die dieser Befehl angewandt wird,  sind nur  noch  lesbar. 
  1020. Rückgängig gemacht werden kann dieses Kommando mit unsave.
  1021. Man  sollte  beachten,  daß es Programme  gibt,  die  auf  solchermaßen 
  1022. geschützte Dateien mit dem frohen Werfen von Bomben reagieren.  Es  muß 
  1023. also vor Verwendung solcher Programme unsave benutzt werden!
  1024.  
  1025. -> savehist
  1026. (kompletter Name: save history)
  1027. Per  Defaulteinstellung wird beim Verlassen des Interpreters  ein  File 
  1028. history.dat  angelegt,  in  dem  sich die  zuletzt  gemachten  Eingaben 
  1029. befinden.
  1030. Dieser  Befehl bewirkt nun ein Ein-/Ausschalten dieser  Abspeicherfunk-
  1031. tion.
  1032. Mit  flags kann bestimmt werden,  ob sie gerade eingeschaltet  ist  und 
  1033. kann dann,  je nach Benutzerwunsch,  umgeschaltet werden  (toggle-Funk-
  1034. tion).
  1035.  
  1036. -> setlp [intvalue(s)]
  1037. (kompletter Name: set lineprinter)
  1038. Die analoge Funktion zu resetlp findet sich in diesem Befehl.  Die hier 
  1039. angebbare  Steuersequenz  wird  vor dem eigentlichen  Ausdruck  an  den 
  1040. Drucker geschickt.  Soll nichts geschickt werden (default), ist einfach 
  1041. wieder setlp einzugeben.
  1042. Mit flags kann die gültige Steuersequenz angeschaut werden.
  1043.  
  1044. -> settab <intvalue>
  1045. (kompletter Name: set tabulator)
  1046. Eine  weitere Funktion,  die den Ausdruck steuert,  wird  durch  dieses 
  1047. Kommando abgedeckt.  Der Benutzer ist hiermit in der Lage,  die Tabula-
  1048. torweite zu bestimmen (defaultmäßig auf 8 Zeichen).  Die minimale Weite 
  1049. liegt bei zwei Zeichen!
  1050. settab beeinflußt übrigens nicht nur Druckerausgaben. Auch Ausgaben via 
  1051. cat oder more benutzen die eingestellte Tabulatorweite!
  1052. Dieser Befehl hat bei Listings natürlich nur eine Bedeutung,  wenn  das                                      -25-
  1053.  
  1054.  
  1055. Tabulatorflag,  daß angibt ob TAB oder die entsprechende Anzahl  Blamks 
  1056. gesendet wird, gesetzt ist.
  1057. flags zeigt die aktuelle Tabulatorweite an.
  1058.  
  1059. -> slash
  1060. Normalerweise kann man statt '\' auch '/' benutzen (z.B.  bei  cd).  Es 
  1061. gibt  aber  externe  Programme,  die mit  Argumenten  gefüttert  werden 
  1062. können,  die  ein  '/' enthalten.  Da der Interpreter '/'  in  ein  '\'  
  1063. umwandelt,  kann  es  hier zu Problemen kommen.  Mit slash  kann  diese 
  1064. Konvertierung ein- bzw. ausgeschaltet werden.
  1065. Mit flags kann der aktuelle Zustand angeschaut werden.
  1066.  
  1067. -> srhist
  1068. (kompletter Name: set/reset history)
  1069. Normalerweise  werden die letzten fünfzig Eingaben in einer  Historyta-
  1070. belle gehalten. Damit ist der Benutzer in der Lage, auf einfache Weise, 
  1071. auf diese Kommandos Bezug zu nehmen (s.u.).
  1072. Um  diese Eintragungen ein-/auszuschalten,  kann dieser Befehl  benutzt 
  1073. werden.
  1074. Mit  flags kann der aktuelle Stand des entsprechenden Flags  angeschaut 
  1075. werden. srhist erzeugt dann die entgegengesetzte Stellung.
  1076. Finden  keine Eintragungen in die Historytabelle statt,  erscheint  der 
  1077. Eingabezähler invers.
  1078.  
  1079. -> srtab
  1080. (kompletter Name: reset tabulator)
  1081. Normalerweise  (default) sendet der Befehl lp keine TAB-Zeichen an  den 
  1082. Drucker,  sondern  expandiert  diese Zeichen korrekt  und  schickt  die 
  1083. entsprechende   Anzahl  Blanks.   Dieser  Befehl  kann  nun  zum   Set-
  1084. zen/Rücksetzen dieser Fähigkeit benutzt werden.
  1085. Mit flags kann die aktuelle Einstellung überprüft werden.
  1086.  
  1087. -> srtitle
  1088. (kompletter Name: set/reset title)
  1089. Nun zum vorletzten Befehl, mit dem ein Druckerlisting beeinflußt werden 
  1090. kann.  Defaultmäßig wird vor jedem Ausdruck ein Titelblatt erzeugt, auf 
  1091. dem  der Filenamen steht.  Ist dies jedoch nicht  gewünscht,  kann  mit 
  1092. srtitle diese Möglichkeit abgeschaltet (oder auch wieder eingeschaltet) 
  1093. werden.
  1094. Mit flags kann mal wieder der aktuelle Zustand des entsprechenden Flags 
  1095. angeschaut werden.
  1096.  
  1097. -> string  <filedescriptor> <string>
  1098. Dieser  Befehl  dient dem Absuchen von Dateien  nach  einer  bestimmten 
  1099. Zeichenfolge.  Es  kann  dabei sowohl nur eine Datei als  auch  mehrere 
  1100. angesprochen  werden  (über  '*').  Der Suchstring  muß  zwischen  zwei                                      -26-
  1101.  
  1102.  
  1103. gleiche Zeichen eingeschlossen sein!  Der Befehl bezieht sich immer auf 
  1104. das aktuelle Verzeichnis.
  1105. Die  maximale  Länge  eines solchen Strings  beträgt  zwanzig  Zeichen. 
  1106. Überschreitet er diese, erfolgt eine Kürzung auf diese Zeichenlänge!
  1107. BEISPIEL:
  1108.  
  1109.                        string  *.* /Oh sole mio/
  1110.  
  1111. Es  werden alle Dateien des aktuellen Ordners nach dem String 'Oh  sole 
  1112. mio'  abgesucht.  Wird  der String in einem File  gefunden,  wird  eine 
  1113. entsprechende Meldung ausgegeben.
  1114.  
  1115.                       string  command.txt *Bingo*
  1116.  
  1117. In  diesem  Fall wird der File 'command.txt' nach  dem  String  'Bingo' 
  1118. abgeklappert.
  1119. Man sieht, daß die Argumentbegrenzungen völlig verschieden sein können, 
  1120. im  oberen  Beispiel  '/',  im unteren '*'.  Sie  müssen  nur  bei  der 
  1121. jeweiligen  Eingabe übereinstimmen.  Es versteht sich wohl von  selbst, 
  1122. daß diese Begrenzungen nicht im eigentlichen Suchstring enthalten  sein 
  1123. dürfen!
  1124.  
  1125. -> sz
  1126. Der  letzte  Befehl zur Druckersteuerung.  Er entstand aus  dem  Mangel 
  1127. meines Druckers, ein vernünftiges 'ß' machen zu können.
  1128. Ist das entsprechende Flag gesetzt,  wird einfach der Code für ein Beta 
  1129. (225)  geschickt,  wenn im Text ein 'ß' vorkommt.  Ist das  Flag  nicht 
  1130. gesetzt, wird der eigentliche 'ß'-Code geschickt (158).
  1131. Mit  flags  kann die Flagstellung überprüft  werden.  Defaultmäßig  ist 
  1132. dieses Flag übrigens gesetzt, also wird Beta geschickt!
  1133.  
  1134. -> time [hh:mm]
  1135. Das Setzen bzw. Abfragen der Uhrzeit geschieht mit diesem Kommando.
  1136. Wird  kein Argument angegeben,  so erfolgt eine Ausgabe  der  aktuellen 
  1137. Systemzeit, sonst wird das Argument als neue Systemzeit übernommen. Bei 
  1138. der  Ausgabe  werden auch die Sekunden angegeben.  Beim  Setzen  dürfen 
  1139. diese nicht angegeben werden!
  1140. BEISPIEL:
  1141.  
  1142.                                time 12:4
  1143.  
  1144. Setzen  der Uhrzeit auf 12 Uhr 4 Minuten.  Die Sekunden werden  automa-
  1145. tisch auf Null gesetzt.
  1146.  
  1147. -> tree
  1148. Ausgabe aller Ordner und Unterordner eines Laufwerks.                                     -27-
  1149.  
  1150.  
  1151.  
  1152. -> unsave <file(s)>
  1153. Files,  die nur lesbar sind,  also nicht gelöscht werden können, werden 
  1154. durch dieses Kommando entschützt. Der umgekehrte Befehl ist save.
  1155.  
  1156. -> version
  1157. Dieses  Kommando  gibt das Erstellungsdatum  aus.  Es  existiert  keine 
  1158. Versionsnummer mehr!
  1159.  
  1160. -> wc <file(s)>
  1161. (kompletter Name: word count)
  1162. Interessiert  man sich für die Anzahl von Ziffern,  Zeilen und  Zeichen 
  1163. eines Files,  so findet dieser Befehl Verwendung.  Alles in allem  kein 
  1164. besonders wichtiges Kommando.
  1165.  
  1166.  
  1167. 3.1 Besondere Befehle
  1168.  
  1169. Die  folgenden vier Befehle die zum Erzeugen eines ASCII-Files  benutzt 
  1170. werden konnten, gibt es nicht mehr:
  1171.  
  1172.                             open <file>
  1173.                             write <string>
  1174.                             append <file>
  1175.                             close
  1176.  
  1177. Dies stellt allerdings keine Einschränkung bei der einfachen  Kreierung 
  1178. von  Textdateien dar.  Ich möchte den Benutzer auf den  Abschnitt,  der 
  1179. sich mit der Ausgabeumleitung befaßt,  verweisen. Die Verbindung dieser 
  1180. Möglichkeit  mit  dem echo-Befehl erlaubt sämtliche Aktionen  der  vier 
  1181. weggefallenen Befehle.
  1182. Der Grund für das Streichen der Kommandos war wieder der  Versuch,  den 
  1183. Interpreter etwas kompakter zu machen und redundante Befehle,  die  nur 
  1184. einen  unnötigen Ballast darstellen,  zu  entfernen.  Ich  glaube,  daß 
  1185. zumindest  in diesem Fall keine Einschränkung für den Benutzer  gegeben 
  1186. ist.
  1187.  
  1188.  
  1189. Möchte der Benutzer das Laufwerk wechseln,  kann er dazu den  cd-Befehl 
  1190. benutzen, dies ist aber nicht unbedingt notwendig. Es ist auch möglich, 
  1191. diesen  Wechsel einfach durch Laufwerkskennung und anschließenden  Dop-
  1192. pelpunkt vorzunehmen.
  1193. BEISPIEL:
  1194.                                   a:
  1195.  
  1196. Wechsel zu Laufwerk A.                                     -28-
  1197.  
  1198.  
  1199.  
  1200.  
  1201. 3.2 Zahlkonvertierungen
  1202.  
  1203. Es kommt ab und zu vor, daß Zahlumrechnungen vorgenommen werden müssen. 
  1204. Der Interpreter stellt hier drei Funktionen zur Verfügung:
  1205.  
  1206. -> #<decvalue>
  1207. Eingabe einer Dezimalzahl und deren Umrechnung in das hexadezimale  und 
  1208. oktale Äquivalent.
  1209.  
  1210. -> $<hexvalue>
  1211. Eingabe einer hexadezimalen Zahl. Als Resultat werden die dezimalen und 
  1212. oktalen Äquivalente ausgegeben.
  1213.  
  1214. -> \<octvalue>
  1215. Und  als  letztes  die Umrechnung für  oktale  Zahlen.  Man  kann  hier 
  1216. übrigens ein Problem erkennen, daß eventuell auftritt, wenn mit '\' ein 
  1217. Programm  aufgerufen werden soll.  Im Zweifelsfall muß man einfach  nur 
  1218. die Laufwerksbezeichnung mit angegeben oder mit '/' arbeiten.
  1219.  
  1220.  
  1221.                                     -29-
  1222.  
  1223. 4 Die ALIAS-Einrichtung
  1224.  
  1225. 4.1 Einführung
  1226.  
  1227. Der Kommandointerpreter bietet dem Benutzer die Möglichkeit,  bestimmte 
  1228. Befehle umzubenennen.  Wird zum Beispiel öfters ein spezielles Programm 
  1229. aufgerufen, kann dieser Aufruf umbenannt werden.
  1230. Sei das Programm 'xcompiler.prg' immer wieder aufzurufen,  kann  dieses 
  1231. Kommando  z.B.  in  'cc' umbenannt werden (sinnigerweise  gehe  ich  in 
  1232. diesem  Beispiel  davon  aus,  daß dieser ominöse  'xcompiler'  ein  C-
  1233. Compiler ist.  'cc' wäre sonst ein recht verwirrender Name).  Wird  ein 
  1234. Editor  öfters  zum Editieren eines bestimmten  Files  aufgerufen  (bei 
  1235. einer  Programmerstellung passiert dies eigentlich dauernd),  kann  der 
  1236. normale  Aufruf  'editor.prg  file' einfach  in  einen  kürzeren,  z.B. 
  1237. 'edit', umbenannt werden.
  1238. Schreibfaule Naturen und Leute,  die mit der Namensgebung der  internen 
  1239. Kommandos nicht besonders glücklich sind, können durch diesen Mechanis-
  1240. mus ihre eigene Nomenklatur aufbauen.
  1241.  
  1242. Sämtliche Umbenennungen können im File alias.dat abgelegt werden. Diese 
  1243. Datei  wird  zum  Programmbeginn  von  command.prg  eingelesen  (soweit 
  1244. vorhanden natürlich). Dies funktioniert allerdings nur, wenn sich diese 
  1245. Datei im gleichen Verzeichnis wie der Interpreter befindet!
  1246. alias.dat  wird übrigens beim Verlassen von command.prg  nicht  automa-
  1247. tisch abgespeichert (vgl. savealias).
  1248. Die  alternativen Kommandonamen können also sofort genutzt  werden  und 
  1249. müssen nicht zu jeder Sitzung neu eingegeben werden!
  1250. Es  ist  natürlich  möglich ganz ohne  alias.dat  auszukommen  und  die 
  1251. Erzeugung  der  Umbenennungen durch einen  Batchfile  vorzunehmen.  Der 
  1252. bequemere Weg erscheint mit jedoch die Verwendung dieser Datei zu sein.
  1253.  
  1254. 4.2 ALIAS-Befehlssatz
  1255.  
  1256. -> alias [string(s)]
  1257. Aufzeigen  aller aktuell gültigen Umbenennungen und ihrer  Äquivalente. 
  1258. Es  ist  auch  die selektive Auswahl  eines  Eintrags  (bzw.  mehrerer) 
  1259. möglich.
  1260.  
  1261. -> delalias <name>
  1262. (kompletter Name: delete alias)
  1263. Löschen eines Alias-Eintrags aus der Alias-Liste.
  1264.  
  1265. -> getalias
  1266. Der File alias.dat wird mit diesem Kommando eingelesen.
  1267.  
  1268.                                     -30-
  1269.  
  1270. -> newalias <new> <old>
  1271. Umbenennung  von 'old' in 'new'.  Dieser Befehl dient also  zur  Alias-
  1272. Erzeugung.
  1273. Neue  Einträge  werden  übrigens nicht an  die  Alias-Liste  angehängt, 
  1274. sondern stehen immer an erster Stelle (Zeit- und Codeersparnis).
  1275. BEISPIEL:
  1276.  
  1277.                        newalias cc xcompiler.prg
  1278.  
  1279. Die  Beschreibung  steht eigentlich schon in dem  obigen  Blabla.  Jede 
  1280. Eingabe von 'cc' wird duch 'xcompiler.prg' ersetzt.
  1281.  
  1282.                            newalias al alias
  1283.  
  1284. Statt alias führt nun auch al zum Aufzeigen der Alias-Einträge.
  1285.  
  1286. -> savealias
  1287. Abspeichern  der  gültigen  Umbenennungen im  File  alias.dat.  Es  muß 
  1288. beachtet  werden,  daß  dieses  Ablegen  der  Datei  nicht  automatisch 
  1289. erfolgt!
  1290. Man  kann  sich  übrigens mithilfe eines  Batchfiles  eine  Enderoutine 
  1291. schreiben,  die  man  zum Verlassen des Interpreters  aufruft  und  die 
  1292. savealias enthält.
  1293.  
  1294.  
  1295.                                     -31-
  1296.  
  1297. 5 Die History-Einrichtung
  1298.  
  1299. 5.1 Einführung
  1300.  
  1301. Ein  weiteres  Bonbon des Interpreters  ist  die  Möglichkeit,  bereits 
  1302. eingegebene  Befehle  auf einfache Weise erneut  aufzurufen.  Dies  ist 
  1303. allerdings auf die letzten fünfzig Eingaben beschränkt.
  1304. UNIX-Kennern dürfte diese Einrichtung und ihre Vorzüge wohl hinlänglich 
  1305. bekannt sein.
  1306. Ein  einfaches Beispiel soll die praktische Anwendung dieser  Fähigkeit 
  1307. aufzeigen. Zum Erstellen eines Programms in C, PASCAL u.s.w. sind immer 
  1308. die gleichen Schritte notwendig:
  1309.  
  1310.             Editieren -> Compilieren -> Linken -> Probelauf
  1311.  
  1312. Meist erfolgt zwischen Compilieren und Linken noch eine Kurzvisite beim 
  1313. Editor,  weil  halt  doch  noch ein kleines  Fehlerchen  im  Sourcecode 
  1314. aufgetaucht ist.
  1315.  
  1316. Die Kommandos für das Beispiel seien nun folgende:
  1317.  
  1318. 77>ed bsp.pas
  1319.  
  1320. Bedeutung: Aufruf des Editors zur Bearbeitung des Files 'bsp.pas'.
  1321.  
  1322. 78>pas bsp.pas
  1323.  
  1324. Bedeutung: Aufruf des Compilers zur Objektfileerzeugung.
  1325.  
  1326. Sollten  jetzt Fehlermeldungen aufgetaucht sein,  geht's wieder  zurück 
  1327. zum Editor. Also wieder
  1328.  
  1329. 79>ed bsp.pas
  1330.  
  1331. reinklopfen u.s.w.
  1332.  
  1333. Bevor  es jetzt weitergeht,  sollte ich vielleicht  verraten,  daß  die 
  1334. Zahlen vor den Beispieleingaben vom Interpreter geliefert werden.
  1335. Dieser  kleine Hinweis ist für das weitere Verständnis  ziemlich  hilf-
  1336. reich!
  1337.  
  1338. Durch die Historyeinrichtung genügt es, wenn der Benutzer bei Befehl 79 
  1339. ("ed  bsp.pas")  einfach nur "!77" eingibt.  Es wird dann  Kommando  77 
  1340. erneut ausgeführt.
  1341. Es  kann  aber nicht nur über die  Kommandonummern  auf  zurückliegende 
  1342. Eingaben  Bezug  genommen  werden;  die Eingabe  "!e"  hätte  auch  zum                                      -32-
  1343.  
  1344.  
  1345. Wiederaufruf des Editors geführt,  d.h. es wird bei dieser Eingabe nach 
  1346. dem letzten Kommando gesucht,  daß mit dem Buchstaben 'e' begonnen hat, 
  1347. und, falls es gefunden werden kann, erfolgt ein erneuter Aufruf des nun 
  1348. expandierten Befehls (hier wäre dies "ed bsp.pas").
  1349.  
  1350. Die Möglichkeit,  alte Kommandos über den Anfangsbuchstaben zurückzuho-
  1351. len,  ist nicht auf einen Buchstaben begrenzt. Es wird nach dem letzten 
  1352. Kommando  gesucht,  daß mit dem eingegebenen Teilstring  übereinstimmt. 
  1353. Ein weiteres Beispiel soll das verdeutlichen: Hat der Benutzer kürzlich 
  1354. den  Befehl "cp afile bfile" eingegeben und auf diesen  Befehl  folgend 
  1355. das  Kommando  "cmp afile bfile",  so würde durch "!c"  der  cmp-Befehl 
  1356. erneut  aufgerufen  werden.  Durch  Eingabe von "!cp"  würde  aber  ein 
  1357. eindeutiger Bezug auf den Kopierbefehl geschaffen und dieser ausgeführt 
  1358. werden.
  1359. Es  ist  also möglich,  durch beliebig  lange  Teileingaben  eindeutige 
  1360. Zuordnungen  zu vorhergehenden Befehlen zu bilden.  Es sei noch  einmal 
  1361. darauf  hingewiesen,  daß  sich in der History-Liste  nur  die  letzten 
  1362. fünfzig  Befehle  befinden  und  daß man nur  diese  erneut  durch  die 
  1363. History-Kommandos aufrufen kann.
  1364. Jede Neueingabe wird in diese Liste eingetragen, dafür wird der älteste 
  1365. Eintrag  entfernt.  Normalerweise müßte aber der Umfang  der  gemerkten 
  1366. Kommandos mehr als ausreichend sein.
  1367. Das bisher gesagte möchte ich mit einem Beispiel noch etwas  anschauli-
  1368. cher machen:
  1369.  
  1370. 120>cp afile bfile
  1371. 121>cmp afile bfile
  1372. 122>!c
  1373. 123>!cp
  1374. 124>!121
  1375.  
  1376. Es werden wieder cp und cmp verwendet. Die Kommandos 120 und 121 müßten 
  1377. eigentlich klar sein.  Kommando 122 ruft das letzte Kommando  auf,  daß 
  1378. mit  dem Buchstaben 'c' begann auf,  in diesem Fall cmp.  Kommando  123 
  1379. ruft den letzten Befehl auf,  der mit den Buchstaben 'cp' beginnt,  und 
  1380. das  ist  Kommando 120.  Befehl 124 bezieht sich nun explizit  auf  ein 
  1381. Kommando, den cmp-Befehl.
  1382.  
  1383. Zusätzlich  zu den !-Kommandos gibt es noch eine  weitere  Möglichkeit, 
  1384. auf alte Eingaben zugreifen zu können:
  1385. Wer  schon  auf  einer VAX unter VMS gearbeitet  hat,  dürfte  mit  der 
  1386. Verwendung der CURSOR-UP bzw. CURSOR-DOWN-Tasten in diesem Zusammenhang 
  1387. vertraut  sein.  Auch  dieser Interpreter erlaubt es mit  Hilfe  dieser 
  1388. Tasten,  alte  Befehle  wieder  sichtbar zu  machen.  Es  ist  außerdem 
  1389. möglich,  durch  Verwendung der Cursortasten und der bereits am  Anfang 
  1390. erwähnten Tasten, diese alten Kommandos frei zu editieren.                                     -33-
  1391.  
  1392.  
  1393. Vorhergehende  Befehle werden mit der CURSOR-UP-Taste  aufgerufen,  ein 
  1394. Zurückblättern wird durch die CURSOR-DOWN-Taste bewerkstelligt.
  1395.  
  1396.  
  1397. 5.2 Die !-Befehle
  1398.  
  1399. -> h
  1400. (kompletter Name: history)
  1401. Dieser Befehl gibt alle in der History-Liste stehenden Einträge auf den 
  1402. Bildschirm aus (die Eingabe von history bewirkt das gleiche).
  1403.  
  1404. -> !<nr>
  1405. Hier wird das Kommando mit der Nummer 'nr' noch einmal aufgerufen.
  1406. In  Verbindung  mit der folgenden Historyfunktion  '!<string>'  muß  an 
  1407. dieser  Stelle leider auf einen Schwachpunkt hingewiesen  werden!  Pro-
  1408. gramme,  die  mit  einem  Ziffernstring  beginnen  und  die  nun  durch 
  1409. '!<ziffernstring>'  erneut aufgerufen werden sollen,  kommen nicht  zur 
  1410. Ausführung (bzw.  nur dann,  wenn zufälligerweise der Ziffernstring mit 
  1411. der Kommandonummer übereinstimmt),  d.h.  Zahlen die sich auf Kommando-
  1412. zeilen beziehen, haben immer Vorrang vor anderen Strings! Das soll aber 
  1413. nicht  heißen,  daß  es unmöglich  ist,  solche  speziellen  'Ziffern'-
  1414. Eingaben  zu wiederholen.  Nur muß man dann statt einem  Ausrufezeichen 
  1415. zwei verwenden! Ein Beispiel soll diese Problematik etwas beleuchten:
  1416.  
  1417.                                101>1.prg
  1418.                                102>!!1
  1419.                                103>!1
  1420.  
  1421. Kommando  101  ruft ein Programm '1.prg'  auf,  102  wiederholt  diesen 
  1422. Aufruf.  Nummer 103 führt zu einer Fehlermeldung, da der Befehl mit der 
  1423. Nummer 1 nicht mehr in der Historytabelle vorhanden ist.
  1424.  
  1425. -> !<string>
  1426. Es soll das letzte Kommando gestartet werden, daß mit 'string' beginnt.
  1427. Man  beachte die beim vorhergenden Kommando  angesprochene  Restriktion 
  1428. dieses Befehls!
  1429.  
  1430. -> !!
  1431. Die letzte Eingabe wird wiederholt.
  1432. Ältere Versionen des Kommandointerpreters erlaubten statt zwei Ausrufe-
  1433. zeichen  auch  die Verwendung von nur einem.  Dies führt nun  zu  einer 
  1434. Fehlermeldung!
  1435.  
  1436.  
  1437.                                     -34-
  1438.  
  1439. 6 Das Batch-Processing
  1440.  
  1441. 6.1 Einführung
  1442.  
  1443. Ich will nun auf die nächste Fähigkeit des Interpreters  eingehen,  die 
  1444. Abarbeitung von Batchdateien.
  1445. Leider  wird  diese Möglichkeit auch auf Systemen,  die  dafür  bereits 
  1446. 'serienmäßig'  eingerichtet sind,  zu selten genutzt.  Lieber gibt  ein 
  1447. Benutzer immer wieder die gleiche Befehlsfolge ein, als sich eine Datei 
  1448. zu  erstellen,  die diese Folge enthält und die einfach nur  aufgerufen 
  1449. werden muß.
  1450. In  einer  Batchdatei kann prinzipiell jedes  der  bisher  besprochenen 
  1451. Kommandos stehen.  Es gibt noch eine ganze Reihe weiterer Befehle,  die 
  1452. den Ablauf innerhalb eines solchen Files steuern (z.B. Sprungmarken).
  1453.  
  1454. Wird in einem Batchfile viel gesprungen,  bzw.  finden  Schleifendurch-
  1455. läufe statt,  sollte der File in einer RAM-Disk abgelegt und  gestartet 
  1456. werden.  Das  bringt zum einen einen gewissen Zeitgewinn und nutzt  auf 
  1457. der  anderen  Seite  die Diskette nicht so  ab.  Ich  möchte  es  nicht 
  1458. unerwähnt  lassen,  daß der Interpreter den Batchfile nicht auf  einmal 
  1459. einliest  und  dann abarbeitet,  sondern Kommando  für  Kommando  holt. 
  1460. Dadurch  wird etwas Speicher gespart und die Verwaltung ist um  einiges 
  1461. einfacher.
  1462.  
  1463. Die  Abarbeitung einer Batchdatei kann jederzeit durch  ^Z  abgebrochen 
  1464. werden!
  1465.  
  1466. Befehle eines Batchfiles werden nicht in die History-Liste aufgenommen!
  1467.  
  1468. Die  im  Folgenden  beschriebenen  Befehle  können  zum  Teil  auch  im 
  1469. Direktmodus eingegeben werden,  dies ist allerdings bei einigen Komman-
  1470. dos nicht sehr sinnvoll.
  1471.  
  1472. Wichtige Änderung:
  1473. In  den  älteren Versionen des Interpreters gab es  die  festeingebaute 
  1474. Variable  counter.  Seit Einführung der Variablen,  ist diese und  alle 
  1475. ihre  Funktionen nicht mehr notwendig.  Um den Programmcode zu  kürzen, 
  1476. habe  ich  deshalb  diese  Variable  entfernt.  Benutzer  von  counter-
  1477. Befehlen, müssen diese durch entsprechende Variablenkommandos ersetzen!
  1478.  
  1479.  
  1480. 6.2 Befehlssatz
  1481.  
  1482. -> batch <file> [arg0...arg9]
  1483. Aufruf einer Batchdatei 'file'.  'arg0' bis 'arg9' entsprechen Strings. 
  1484. Innerhalb eines Batchfiles können Platzhalter gesetzt werden ('$0'  bis                                      -35-
  1485.  
  1486.  
  1487. '$9').  Diese  werden durch die Strings ('arg0' bis 'arg9')  bei  einem 
  1488. Abarbeiten des Batchfiles ersetzt. Dadurch wird erreicht, daß z.B. eine 
  1489. Batchdatei,  die  die  Compilierung und das  Linken  eines  Sourcefiles 
  1490. zusammenfaßt, für unterschiedliche Sourcefiles Verwendung finden kann.
  1491. Die  Argumente  müssen aufsteigend bei 0 beginnend  eingesetzt  werden, 
  1492. d.h. jedes '$0' wird durch das erste Stringargument ersetzt, jedes '$9' 
  1493. würde durch jedes neunte Stringargument ersetzt werden.  Es stehen also 
  1494. maximal zehn solche Platzhalter zur Verfügung.
  1495. Weiter unten folgen einige Beispiele,  die unter anderem die Verwendung 
  1496. dieser Argumentersetzung beleuchten sollen.
  1497. Für faule Benutzer gibt es die Möglichkeit, auf die Extension '.COM' zu 
  1498. verzichten,  auch wenn die Batchdatei diese besitzen sollte.  Kann  der 
  1499. Interpreter einen angegebenen Batchfile nicht finden,  versucht er noch 
  1500. durch  Anhängen von '.COM' zum Erfolg zu kommen.  Beispielsweise  würde 
  1501. die  Datei  'BSP.COM'  durch  "batch bsp"  und  durch  "batch  bsp.com" 
  1502. aufgerufen  werden.  Ich  möchte  an dieser  Stelle  betonen,  daß  ein 
  1503. Batchfile  durchaus keine Extension haben muß.  Jeder gültige  Filename 
  1504. kann für eine Batchdatei verwendet werden!
  1505. Es können maximal 3 Batchfiles zur gleichen Zeit laufen (sich gegensei-
  1506. tig  aufrufen)!  Die  Argumente  sind in jedem  dieser  drei  möglichen 
  1507. Dateien unterschiedlich,  d.h.  besitzt File A die Belegung  'BEISPIEL' 
  1508. für  '$0' und ruft dann File B auf,  so ist dort '$0'  unbesetzt,  wenn 
  1509. beim Aufruf kein Argument explizit angegeben worden ist.
  1510.  
  1511. Das  mit  den  Argumenten möchte ich an dieser  Stelle  noch  an  einem 
  1512. kleinen Beispiel zu verdeutlichen versuchen.
  1513. Ich  gehe  mal davon aus,  daß man sich in  command.prg  befindet.  Die 
  1514. folgende  Eingabesequenz  erzeugt nun eine  Batchdatei  'BSP.COM',  die 
  1515. nichts  anderes  macht,  als zwei Argumente mit  echo  auszugeben.  Der 
  1516. Benutzer kann daran die Wirkung der $-Ersetzung durch  Eingabeparameter 
  1517. erkennen (hoffentlich).
  1518.  
  1519.                          80>echo|bsp.com
  1520.                          81>echo||bsp.com echo $0 $1
  1521.                          82>batch bsp.com arg1 arg2
  1522.                           arg1 arg2
  1523.                          83>
  1524.  
  1525. Je  nachdem  mit welchen Argumenten diese Datei  nun  aufgerufen  wird, 
  1526. ändert  sich  die Ausgabe.  Man sollte sich ruhig auch  mal  anschauen, 
  1527. welche Ausgabe bei fehlender Argumentangabe kommt bzw.  bei Angabe  von 
  1528. drei oder noch mehr Parametern.
  1529.  
  1530. -> @<file> [arg0 ... arg9]
  1531. Analog zu batch, nur diesmal mit @. Dieses Kommando ist einfach nur für 
  1532. die Liebhaber von VMS gedacht.                                     -36-
  1533.  
  1534.  
  1535.  
  1536. -> ?arg <argument nummer> <label>
  1537. Wurde  ein  Batchfile mit dem Argument versorgt,  so  wird  zu  'label' 
  1538. gesprungen  (eine  '$0'-Überprüfung wird z.B.  durch  "?arg  0  ist_da" 
  1539. repräsentiert).
  1540.  
  1541. -> ?batch
  1542. Gibt die Anzahl der gerade laufenden Batchdateien aus.  Es können,  wie 
  1543. bereits  angesprochen,  maximal  drei Batchdateien  gleichzeitig  offen 
  1544. sein.
  1545.  
  1546. -> restart
  1547. Befehl  innerhalb  einer Batchdatei zum Neustart der  Datei,  also  die 
  1548. ganze Chose wieder von vorne, d.h. Sprung zur ersten Befehlszeile.
  1549.  
  1550. -> wait
  1551. Warten  auf das Drücken einer Taste.  Die Abarbeitung eines  Batchfiles 
  1552. wird solange angehalten, bis eine Taste gedrückt wird.
  1553. Wird an dieser Stelle ^Z gedrückt,  erfolgt ein Abbruch der  Batchbear-
  1554. beitung!
  1555. Dieses Kommando kann z.B.  dazu verwendet werden, die Abarbeitung eines 
  1556. Batchfiles solange anzuhalten bis ein ausgegebener Text gelesen  worden 
  1557. ist.
  1558.  
  1559. -> stop
  1560. Stoppen eines Batchfiles.
  1561.  
  1562. -> ?stop
  1563. Bedingtes Stoppen einer Batchdatei.  Der Benutzer wird gefragt,  ob der 
  1564. Batchfile  angehalten  werden  soll (die  voreingestellte  Antwort  ist 
  1565. übrigens nein).
  1566.  
  1567. -> break
  1568. Es  werden  sämtliche laufenden Batchfiles  gestoppt,  d.h.  ruft  eine 
  1569. Batchdatei  eine andere auf,  in der dann dieser Befehl  steht,  werden 
  1570. beide Filebearbeitungen abgebrochen (im Gegensatz zu stop).
  1571.  
  1572. -> text
  1573. Jedes  Kommando  innerhalb  des  Batchfiles  soll  auf  dem  Bildschirm 
  1574. angezeigt werden. Diese Einstellung ist default.
  1575. Mit flags kann die aktuelle Einstellung angeschaut werden.
  1576.  
  1577. -> notext
  1578. Die Umkehrung zu text.  Nach diesem Kommando werden die Batch-Dateikom-
  1579. mandos nicht mehr ausgegeben.
  1580.                                     -37-
  1581.  
  1582.  
  1583. -> errorbreak
  1584. Normalerweise wird eine Batchbearbeitung abgebrochen,  wenn ein  Fehler 
  1585. auftritt.  Dies  kann durch errorbreak ein- bzw.  ausgeschaltet  werden 
  1586. (abhängig  von  der gerade aktuellen Einstellung,  die  mit  flags  mal 
  1587. wieder angeschaut werden kann).
  1588.  
  1589. -> lbl <marke>
  1590. (kompletter Name: label)
  1591. Einführung einer Sprungmarke in einem Batchfile.
  1592. Diese Marken können mit goto und einigen anderen Befehlen  angesprungen 
  1593. werden.
  1594. Zum  Aufbau von Schleifen in Batchdateien muß mit diesen  Anprungmarken 
  1595. gearbeitet werden.
  1596. In einer lbl-Zeile dürfen sonst keine Befehle stehen! Also wäre z.B.
  1597.  
  1598.                 lbl beispiel echo dies ist ein Beispiel
  1599.  
  1600. nicht erlaubt (es kommen zwei Kommandos, lbl und echo, vor).
  1601.  
  1602. -> goto <marke>
  1603. Sprung zur angegebenen Marke (vgl. lbl).
  1604.  
  1605. -> exist <file> <marke>
  1606. Es  wird getestet,  ob die Datei 'file' existiert.  Ist dies der  Fall, 
  1607. wird  zu  'marke'  gesprungen,  ansonsten  wird  beim  nächsten  Befehl 
  1608. weitergemacht.
  1609. BEISPIEL:
  1610.  
  1611.                         exist test.prg paletti
  1612.  
  1613. Existiert der File 'test.prg' wird zur Marke 'paletti' gesprungen.
  1614.  
  1615. -> size0 <file> <marke>
  1616. Existiert  die Datei 'file' nicht oder ist ihre Größe  Null,  wird  zum 
  1617. angegebenen  Label  'marke'  gesprungen,  ansonsten  auch  wieder  beim 
  1618. Folgebefehl weitergemacht (die umgekehrte Funktion von exist).
  1619.  
  1620. Die  Kommandos  size0 und exist sind ganz praktisch,  wenn  es  um  die 
  1621. Compilierung/Assemblierung  und Linkung von Sourcefiles geht.  Es  gibt 
  1622. z.B. Compiler, die auf das Fehlen eines Sourcefiles mit einem Bombenha-
  1623. gel reagieren. Dieses Problem kann mit diesen Befehlen umgangen werden.
  1624.  
  1625. -> ; [Kommentar]
  1626. Durch  ;  werden Kommentarzeilen eingeleitet,  die  keinerlei  Befehls-
  1627. funktion  haben  und  nur zum  besseren  Verständnis  einer  Batchdatei 
  1628. beitragen sollen.                                     -38-
  1629.  
  1630.  
  1631. ;  kann übrigens auch nach einem Befehl stehen, alles vor dem Semikolon 
  1632. wird ausgeführt, alles danach wird ignoriert.
  1633. Dieses  markieren von Kommentarbereichen funktioniert nur  in  Batchda-
  1634. teien,  wird im Direktmodus versucht eine Kommentarzeile einzugeben, so 
  1635. wird  diese wie eine normale Zeile aufgefaßt,  d.h.  es dürfte wohl  zu 
  1636. einer Fehlermeldung kommen.
  1637.  
  1638. -> status
  1639. Ausgabe einer Variablen,  die zur Steuerung innerhalb eines  Batchfiles 
  1640. benutzt  wird.  Sie  wird vor jedem Ablauf einer  Batchdatei  auf  Null 
  1641. gesetzt.
  1642. Werden innerhalb des Files andere Programme (z.B.  Compiler) gestartet, 
  1643. so  wird  deren  Rückgabewert  in  status  abgelegt.  Ein  fehlerhafter 
  1644. Compilerlauf  kann also zum Sprung zu einer bestimmten Marke  oder  zum 
  1645. Ausstieg  aus  dem Batchfile führen.  Der Benutzer muß  allerdings  die 
  1646. Rückgabewerte der Programme und ihre Bedeutung kennen.
  1647. Es  kommt  diesem Systemparameter aber noch eine andere  Bedeutung  zu. 
  1648. Jede  Fehlermeldung  des Interpreters hat in  einer  Fehlernummer,  die 
  1649. diese Variable dann enthält,  ihren Niederschlag.  Damit lassen sich in 
  1650. Batchdateien  bestimmte  Reaktionen auf eventuell  aufgetretene  Fehler 
  1651. einbauen (in BASIC würde man wohl von ON ERROR GOTO sprechen).
  1652. Ich  möchte noch einmal hervorheben,  daß der Benutzer keinen  direkten 
  1653. Einfluß  auf  die Belegung von status nehmen kann!  Sie wird  nur  beim 
  1654. Start  eines  Batchfiles  auf Null  gesetzt,  bzw.  wenn  ein  externes 
  1655. Programm  den  Rückgabewert  Null liefert.  Sollte  jemand  mit  dieser 
  1656. Einschränkung  nicht  leben können,  muß er sich halt  einen  Batchfile 
  1657. schreiben,  der nichts macht und diesen dann aufrufen; das Ergebnis ist 
  1658. dann ein status-Wert Null.
  1659. Wird  nur  der  Befehl  status  eingegeben,  erfolgt  die  Ausgabe  des 
  1660. Variablenwertes. Damit lassen sich also Rückgabewerte bestimmen.
  1661. status ist ein Longinteger (32-Bit).
  1662.  
  1663. -> oldy <fileA> <fileB> <label>
  1664. Wenn das Erstellungsdatum von 'fileA' vor dem von 'fileB'  liegt,  wird 
  1665. zu 'label' gesprungen.
  1666. Mit diesem Befehl ist es möglich, eigene MAKE-Umgebungen zu erstellen.
  1667. Im  Anhang  befindet sich ein Beispiel,  daß sich  mit  der  Verwendung 
  1668. dieses Befehls auseinandersetzt.
  1669.  
  1670. -> shiftarg
  1671. (kompletter Name: shift argument)
  1672. Verschiebt  existierende  Argumente um eine Position  nach  links.  Das 
  1673. erste Element fällt dabei heraus.
  1674. Existieren  keine  Elemente,  hat dieses Kommando  keine  Funktion  (es 
  1675. erfolgt keine Fehlermeldung)!
  1676. Existieren z.B.  die drei Argumente ARG1, ARG2 und ARG3, dann wäre ARG1                                      -39-
  1677.  
  1678.  
  1679. $0 zugeordnet, ARG2 $1 und ARG3 $2. shiftarg würde nun ARG1 löschen und 
  1680. die  beiden verbleibenden Argumente um eins nach links  schieben,  d.h. 
  1681. ARG2 wäre nun $0 zugeordnet und ARG3 $1. $2 besitzt kein Argument mehr.
  1682. Mit  diesem  Befehl kann in Batchdateien auf eine variable  Anzahl  von 
  1683. Eingabeparametern eingegangen werden bzw.  die Erstellung von Schleifen 
  1684. ist flexibler geworden.
  1685.  
  1686. -> setarg <argument(e)>
  1687. (kompletter Name: set argument)
  1688. Mit diesem Kommando lassen sich $-Parameter belegen.  Dabei wird  immer 
  1689. der  erste  freie Parameter belegt.  Übersteigt die Anzahl  dabei  zehn 
  1690. Parameter, werden die überzähligen Argumente ignoriert.
  1691. Währe $0 bereits mit String XYZ belegt (z.B. durch eine Parameterangabe 
  1692. beim Aufruf des Batchfiles),  würde der Befehl "setarg abc" $1 mit  dem 
  1693. String abc belegen.
  1694.  
  1695. -> inquire [string]
  1696. Dieser Befehl stellt das interaktive Äquivalent zu setarg dar.
  1697. Stößt  der Kommandinterpreter in einem Batchfile auf  dieses  Kommando, 
  1698. muß der Benutzer ein oder mehere Argumente eingeben.  Diese werden dann 
  1699. wie bei setarg  auf die $s verteilt.
  1700. 'string' repräsentiert den Text,  der den Benutzer zur Eingabe  auffor-
  1701. dert. Diese Angabe ist optional.
  1702. BEISPIEL:
  1703.                          ?arg 0 gibt_argument
  1704.                          inquire Argument
  1705.                          lbl gibt_argument
  1706.                          echo $0
  1707.  
  1708. Diese Zeilen sollen einen Beispielbatchfile darstellen. Wird dieser mit 
  1709. einem Argument aufgerufen erfolgt ein direkter Sprung zu  echo,  anson-
  1710. sten wird der Benutzer aufgefordert, ein Argument einzugeben.
  1711.  
  1712. -> cleararg
  1713. (kompletter Name: clear argument)
  1714. Löscht alle vorhandenen Parameterbelegungen für $-Argumente.
  1715.  
  1716. -> ifarg <string1> <string2> <label>
  1717. (kompletter Name: if argument)
  1718. Wenn 'string1' gleich 'string2' ist, wird zu 'label' gesprungen.
  1719. Dieser  Befehl ist hauptsächlich für die flexible Reaktion  auf  unter-
  1720. schiedliche Eingabeparameter in Batchdateien gedacht.
  1721.  
  1722. -> <> <intvalue>
  1723. Ist  status ungleich 'intvalue' (Integerzahl),  wird  der  Batchvorgang 
  1724. abgebrochen (z.B. nach einem fehlerhaften Compilerdurchlauf).                                     -40-
  1725.  
  1726.  
  1727.  
  1728. -> < <intvalue>
  1729. Ist status kleiner als 'intvalue' wird der Batchfile abgebrochen.
  1730.  
  1731. -> > <intvalue>
  1732. Ist status größer als 'intvalue' wird der Batchfile abgebrochen.
  1733.  
  1734. -> == <intvalue>
  1735. Ist status gleich 'intvalue' wird der Batchfile abgebrochen.
  1736.  
  1737. -> ?status= <zahl> <label>
  1738. -> ?status# <zahl> <label>
  1739. -> ?status> <zahl> <label>
  1740. -> ?status< <zahl> <label>
  1741. Ist  status gleich,  ungleich,  größer oder kleiner als eine  bestimmte 
  1742. 'zahl' soll zur Marke 'label' gesprungen werden.
  1743. Damit  kann z.B.  nach einem fehlerhaften Compilerdurchgang  direkt  zu 
  1744. einem Editoraufruf gesprungen werden.
  1745. Es gibt aber auch noch andere interessante Möglichkeiten. Gibt z.B. ein 
  1746. bestimmtes Programm je nach internem Lauf bzw.  Resultat andere Parame-
  1747. ter  nach Programmende zurück,  kann mithilfe von status ein  Batchfile 
  1748. aufgebaut werden, der auf diese unterschiedlichen Rückgaben individuell 
  1749. reagiert  (z.B.  Steuerungsaufgaben lassen sich damit recht  problemlos 
  1750. bewältigen).
  1751.  
  1752. Soweit  die etwas  spezielleren Batchfile-Kommandos,  die das  Arbeiten 
  1753. mit diesen Dateien besonders unterstützen sollen.
  1754.  
  1755. Befindet  sich  im Verzeichnis,  das  command.prg  enthält,  die  Datei 
  1756. auto.com,  so  werden  die  darin enthaltenen Befehle  beim  Start  des 
  1757. Interpreters ausgeführt. Es lassen sich auf diese Weise z.B. Funktions-
  1758. tasten vorbelegen oder bestimmte Flags setzen.
  1759.  
  1760.  
  1761.                                     -41-
  1762.  
  1763. 6.3 Beispiele
  1764.  
  1765. 6.3.1 Bsp.1
  1766.  
  1767.      ;
  1768.      ; Batchfile zur Compilierung und zum Linken eines C-Files
  1769.      ; durch den MEGAMAX-C-Compiler
  1770.      ;
  1771.      mmcc.ttp $0.c            ;Aufruf des Compilers
  1772.      <> 0                     ;Abbruch, wenn Fehler aufgetreten ist
  1773.      mmlink.ttp $0.o -O $1    ;Aufruf des Linkers
  1774.      <> 0                     ;Abbruch im Fehlerfall
  1775.      rm $0.o                  ;Löschen des Objektfiles
  1776.  
  1777. Das  vorliegende  Beispiel kann direkt zur Arbeit  mit  dem  MEGAMAX-C-
  1778. Compiler (nicht LASER-C !) herangezogen werden (ggf.  muß man natürlich 
  1779. noch Pfadnamen für das Compiler- und Linkerprogramm anfügen).
  1780.  
  1781. Die ersten vier Zeilen dienen lediglich der Kommentierung der  Batchda-
  1782. tei. In Zeile fünf wird der Compiler aufgerufen. '$0' repräsentiert den 
  1783. Namen des Sourcefiles (Eingabe ohne Extension!).
  1784. Der  Compiler gibt bei einem erfolgreichen Durchlauf eine Null  zurück. 
  1785. Andernfalls sorgt Zeile sechs für einen Abbruch der Batchbearbeitung.
  1786. Nach  der  Compilierung soll der Objektfile gelinkt  werden.  Dies  ge-
  1787. schieht  in  Zeile  sieben.  Sollten dort  Probleme  aufgetreten  sein, 
  1788. erfolgt in Zeile acht ein Abbruch.
  1789. In  Zeile  neun wird der aufgetretene Objektfile  wieder  gelöscht.  In 
  1790. Zeile  sieben wird übrigens ein zweites Argument benutzt.  Dieses  gibt 
  1791. den Namen des lauffähigen Programms an (diesmal mit Extension).
  1792.  
  1793. Ein Aufruf dieser Batchdatei könnte nun folgendermaßen aussehen:
  1794.  
  1795.                  batch cc command command.prg
  1796.  
  1797. äquivalent dazu wäre der Aufruf:
  1798.  
  1799.                         @cc command command.prg
  1800.  
  1801. Es wird also der C-File 'command.c' compiliert und gelinkt.  Der daraus 
  1802. resultierende  File  soll 'command.prg'  heißen.  Der  zwischenzeitlich 
  1803. entstehende File 'command.o' wird durch den rm-Befehl gelöscht.
  1804. Die  eigentliche Batchdatei heißt 'cc'.  Die Parameterangaben '$0'  und 
  1805. '$1' werden durch die Argumente 'command' (für '$0') und  'command.prg' 
  1806. (für '$1') ersetzt.
  1807.  
  1808. Das zweite Beispiel dient dem gleichen Zweck, nur soll diesmal im Falle                                      -42-
  1809.  
  1810.  
  1811. eines  Fehlers  ein Editor ('editor.prg' genannt) aufgerufen  und  nach 
  1812. erfolgter  Editierung  wieder  zum  Anfang  der  Batchdatei  gesprungen 
  1813. werden:
  1814.  
  1815. 6.3.2 Bsp.2
  1816.  
  1817.      ;
  1818.      ; Batchfile zur Compilierung und zum Linken eines C-Files
  1819.      ; durch den MEGAMAX-C-Compiler
  1820.      ;
  1821.      mmcc.ttp $0.c         ;Aufruf des Compilers
  1822.      ?status# 0 edit       ;Sprung zum Editor, wenn Fehler
  1823.      mmlink.ttp $0.o -O $1 ;Aufruf des Linkers
  1824.      ?status# 0 edit       ;Sprung zum Editor,wenn Fehler
  1825.      rm $0.o               ;Löschen des Objektfiles
  1826.      stop                  ;Stoppen des Batchfiles
  1827.      lbl edit              ;Label 'edit'
  1828.      wait                  ;in aller Ruhe Fehlermeldungen lesen
  1829.      editor.prg $0.c       ;Editoraufruf
  1830.      restart               ;Neustart des Batchfiles
  1831.  
  1832. Die Interpretierung dieses Files dürfte nach den vorhergehenden Ausfüh-
  1833. rungen, keine Probleme mehr bereiten.
  1834.  
  1835.                                     -43-
  1836.  
  1837. 6.3.3 Bsp.3
  1838.  
  1839.      ;
  1840.      ; Batchdatei zur Assemblierung von Sourcefiles
  1841.      ; mit dem Assembler aus dem Entwicklungspaket von DRI
  1842.      ;
  1843.      notext                        ; kein Geschwafel
  1844.      cls
  1845.      size0 $0.s fehler             ; Sourcefile muß schon da sein
  1846.      echo 1. Assemblierung         ; erster Schritt
  1847.      as68.ttp -l -u $0.s
  1848.      size0 $0.o fehler             ; Ergebnis der Assemblierung
  1849.      echo 2. Linken                ; zweiter Schritt
  1850.      echo $0.s ==> $0.$1
  1851.      link68.ttp [u] $0.68k = $0.o  ; Linken des 'o'-Files
  1852.      size0 $0.68k fehler           ; wenn kein Ergebnis -> Fehler
  1853.      echo 3. Relativlader
  1854.      relmod.ttp $0.68k $0.$1       ; Ergebnis basteln
  1855.      rm $0.68k $0.o                ; überflüssige Files löschen
  1856.      echo
  1857.      stop
  1858.      lbl fehler                    ; Fehler melden
  1859.      echo !!! Abbruch wegen Fehler !!!
  1860.      echo
  1861.  
  1862. Mit  diesem File kann die Assemblierung von Files durch  den  Assembler 
  1863. des Entwicklungspakets automatisiert werden.  Diese Datei benötigt zwei 
  1864. Argumente,  zum  einen den Namen des Sourcefiles (ohne  '.s'-Extension) 
  1865. und  zum  anderen die Extension der  Zieldatei,  also  '.PRG',  '.TOS', 
  1866. '.ACC' oder '.TTP'.
  1867. Will  man  z.B.  den  File 'test.s'  assemblieren,  könnte  der  Aufruf 
  1868. folgendermaßen aussehen:
  1869.  
  1870.                              @as test prg
  1871.  
  1872. Es wird dabei angenommen,  daß die Batchdatei 'as' heißt. Der Ergebnis-
  1873. file würde hier 'test.prg' heißen.
  1874.  
  1875.  
  1876.                                     -44-
  1877.  
  1878. 7 Variablen
  1879.  
  1880. Die letzte Steuermöglichkeit eines Batchfiles wird durch die Einführung 
  1881. der bereits kurz angesprochenen Variablen geboten.
  1882. Der  Benutzer  ist in der Lage,  Variablen zu definieren und  kann  mit 
  1883. diesen einfache Rechnungen durchführen,  Schleifen aufbauen oder  durch 
  1884. Sprunganweisungen bestimmte Abläufe von Batchdateien erzeugen.
  1885. Man  sieht vielleicht hier schon,  daß die Variablen in der  Hauptsache 
  1886. zum einfacheren Arbeiten mit Batchdateien beitragen sollen.  Viele  der 
  1887. hier  aufgeführten Kommandos sind nur in solchen Dateien  sinnvoll  und 
  1888. zulässig!
  1889.  
  1890. Die Befehle im einzelnen ('|' bedeutet "entweder oder"):
  1891.  
  1892. -> let <var> <zahl | varvalue>
  1893. Belegen von 'var' mit dem Wert 'zahl' oder 'value'
  1894. BEISPIEL:
  1895.  
  1896.                              let index 111
  1897.  
  1898. Die Variable 'index' wird mit 111 belegt.
  1899.  
  1900.                            let index2 index
  1901.  
  1902. Die Variable 'index2' wird mit dem Wert der Variablen 'index' belegt.
  1903.  
  1904. -> if <varA> = <varB | zahl> <label>
  1905. -> if <varA> <> <varB| zahl> <label>
  1906. -> if <varA> > <varB | zahl> <label>
  1907. -> if <varA> < <varB | zahl> <label>
  1908. Damit  kann in Batchfiles ein fröhliches Hin- und  Hergespringe  veran-
  1909. staltet werden.  Die Bedeutung wird wohl durch Beispiele am einfachsten 
  1910. vermittelt:
  1911. BEISPIEL:
  1912.  
  1913.                          if index = 22 marke1
  1914.  
  1915. Wenn  die  Variable 'index' den Wert 22 hat,  soll zur  Marke  'marke1' 
  1916. gesprungen werden.
  1917.  
  1918.                      if parameter <> index markex
  1919.  
  1920. Wenn die Variable 'parameter' ungleich der Variablen 'index' ist,  soll 
  1921. zur Marke 'markex' gesprungen werden.
  1922.  
  1923.                                     -45-
  1924.  
  1925. -> -- <variable(n)>
  1926. Dekrementieren einer oder mehrerer Parameter um eins.
  1927. BEISPIEL:
  1928.  
  1929.                              -- index juhu
  1930.  
  1931. Die beiden Variablen 'index' und 'juhu' werden um eins erniedrigt.
  1932.  
  1933. -> ++ <variable(n)>
  1934. Analog zu --, nur daß diesmal eins dazuaddiert wird.
  1935.  
  1936. -> -= <varA> <varB | zahl>
  1937. Erniedrigen von 'varA' um 'varB' oder 'zahl' oder anders ausgedrückt:
  1938.  
  1939.                           varA := varA - varB
  1940.                           varA := varA - zahl
  1941.  
  1942. 'varB'  kann übrigens die gleiche Variable wie 'varA' sein.  In  diesem 
  1943. Falle würde das bedeuten,  daß 'varA' nach der Operation den Wert  Null 
  1944. hat.
  1945. BEISPIEL:
  1946.  
  1947.                               -= index 12
  1948.  
  1949. Von der Variablen 'index' wird 12 abgezogen.
  1950.  
  1951.                              -= index juhu
  1952.  
  1953. Von  der Variablen 'index' wird der Wert des Parameters 'juhu'  abgezo-
  1954. gen.
  1955.  
  1956. -> += <varA> <varB | zahl>
  1957. Analog zu -=, nur daß diesmal eine Addition stattfindet.
  1958.  
  1959. -> *= <varA> <varB | zahl>
  1960. Analog zu -=, nur daß diesmal eine Multiplikation stattfindet.
  1961.  
  1962. -> /= <varA> <varB | zahl>
  1963. Analog zu -=, nur daß diesmal eine Division stattfindet.
  1964.  
  1965. -> 2* <variable(n)>
  1966. Verdoppeln von Variablenwerten.
  1967.                                     -46-
  1968.  
  1969. BEISPIEL:
  1970.  
  1971.                              2* index juhu
  1972.  
  1973. 'index' und 'juhu' haben hier ihre Werte verdoppelt.
  1974.  
  1975. -> 2/ <variable(n)>
  1976. Halbieren von Variablenwerten.
  1977. Da  die  Variablen  vom Typ Integer  sind,  werden  ungerade  Variablen 
  1978. natürlich  nicht den korrekten Wert erhalten,  11 / 2 würde im  Wert  5 
  1979. resultieren und nicht in 5.5!
  1980. BEISPIEL:
  1981.  
  1982.                                2/ index
  1983.  
  1984. Hat  'index' vor Ausführung des Kommandos 222 enthalten,  steht  danach 
  1985. 111 in der Variablen.
  1986.  
  1987. -> print <variable(n)>
  1988. Ausgabe der Variablenwerte auf dem Bildschirm.
  1989. BEISPIEL:
  1990.  
  1991.                            print index juhu
  1992.  
  1993. Hier werden die Inhalte von 'index' und 'juhu' ausgegeben.
  1994.  
  1995. -> clear
  1996. Alle Variablenwerte werden auf Null gesetzt,  d.h.  aber nicht, daß die 
  1997. Variablenliste entfernt wird, dafür gibt es das folgende Kommando:
  1998.  
  1999. -> erase
  2000. Die Variablenliste wird entfernt.
  2001.  
  2002. -> vardump
  2003. Alle  vorhandenen Variablen werden mit ihren Werten auf den  Bildschirm 
  2004. ausgegeben.  Dieser  Befehl verschafft dem Benutzer immer  einen  Über-
  2005. blick,  welche  Variablen existieren,  wie groß ihre  Anzahl  ist,  mit 
  2006. welchen  Werten  sie  gerade  belegt  sind  und  wo  sie  sich  in  der 
  2007. Variablenliste befinden.
  2008.  
  2009.  
  2010. 7.1 Allgemeines zu den Variablen
  2011.  
  2012. Alle Variablen sind vom Typ Longinteger (32 Bits).
  2013. Neue Variablen können nicht nur durch den let-Befehl eingeführt werden. 
  2014. Jeder Bezug auf eine Variable,  die noch nicht existiert, erzeugt einen                                      -47-
  2015.  
  2016.  
  2017. Variableneintrag und setzt den aktuellen Variablenwert auf Null!
  2018.  
  2019. Die Variablen sind in einer Pointerliste, die den jeweiligen Variablen-
  2020. namen und Wert enthält, organisiert.
  2021.  
  2022.  
  2023. 7.2 Beispiel
  2024.  
  2025. An  einem  Beispiel soll gezeigt werden,  daß mit Hilfe  der  Variablen 
  2026. nicht nur Zählschleifen in Batchfiles aufgebaut werden können.
  2027.  
  2028. Der folgende Batchfile dient zur Compilierung,  Linkung und Codeverbes-
  2029. serung  der einzelnen Sourcefiles,  aus denen  der  Kommandointerpreter 
  2030. besteht.
  2031. Die Sourcefiles heißen im einzelnen 'COMMAND.C', 'COM.C' und 'EDI.C'.
  2032. Die Batchdatei soll nun in der Lage sein,  jeden einzelnen dieser Files 
  2033. zu  compilieren oder den Objektcode zu verbessern.  Zusätzlich muß  die 
  2034. Möglichkeit gegeben sein, die entsprechenden Objektfiles zusammenlinken 
  2035. zu können, so daß command.prg als Endprodukt entsteht.
  2036. Jede  dieser  Anforderungen  muß über  Parametereingabe  an  die  Datei 
  2037. einzeln erfüllt sein.
  2038. Das Eingabeformat soll folgendermaßen aussehen:
  2039.  
  2040.                           @cc <file> [aktion]
  2041.  
  2042. 'cc'  repräsentiert  dabei die Batchdatei.  <file> ist einer  der  oben 
  2043. genannten Files (ohne Extension!).  [aktion] steuert das Verhalten  des 
  2044. Batchfiles. Wird dieser Parameter weggelassen, soll der angegebene File 
  2045. compiliert werden.  Daran anschließend eine Code-Verbesserung  durchge-
  2046. führt werden und zum Schluß das ganze zusammengelinkt werden.
  2047. Wird  für  [aktion] 'lc' oder 'cl' eingegeben wird,  nur  der  Compiler 
  2048. gestartet und das ganze zusammengelinkt.
  2049. Bei Eingabe von 'il' oder 'li' wird eine Code-Verbesserung durchgeführt 
  2050. und dann der Linkvorgang gestartet.
  2051. 'l' resultiert in einem Linkvorgang.
  2052. 'c' startet nur den Compiler.
  2053. 'i' führt eine Codeverbesserung aus.
  2054.  
  2055. Möchte  man den File 'COMMAND.C' compilieren und mit den anderen  Files 
  2056. zusammenlinken, müßte also
  2057.  
  2058.                             @cc command lc
  2059.  
  2060. eingegeben werden.
  2061.  
  2062.                                     -48-
  2063.  
  2064. 7.2.1 Der File cc
  2065.  
  2066.      ;
  2067.      ; Batchfile zur Compilierung eines C-Files von command.prg
  2068.      ;
  2069.      notext         ; keine Kommandoausgabe auf Schirm
  2070.      cls
  2071.      ;
  2072.      ; Steuervariable
  2073.      ;
  2074.      let $1 0            ; alles ausführen
  2075.      let lc 4            ; compilieren und linken
  2076.      let cl 4            ; - " -     
  2077.      let l 1             ; linken
  2078.      let c 2             ; compilieren
  2079.      let i 6             ; Code verbessern
  2080.      let il 5            ; verbessern und linken
  2081.      let li 5            ; - " -     
  2082.      if $1 = 1 linken
  2083.      if $1 > 4 improve
  2084.      mmcc.ttp $0.c       ; Compilerabteilung
  2085.      ?status# 0 exit     ; im Fehlerfall
  2086.      if $1 = 2 exit      ; nur Compilerlauf
  2087.      if $1 = 4 linken
  2088.      lbl improve         ; Improve-Abteilung
  2089.      mmimp.ttp $0.o
  2090.      ?status# 0 exit     ; Fehler aufgetreten
  2091.      if $1 = 6 exit
  2092.      lbl linken          ; Linkerabteilung
  2093.      mmlink.ttp command.o com.o edi.o -O command.prg
  2094.      lbl exit
  2095.  
  2096. Ich glaube,  damit ist eine sinnvolle Verwendung für Variablen deutlich 
  2097. geworden.
  2098. Es ist relativ einfach,  diesen File an eigene Bedürfnisse  anzupassen. 
  2099. Die Vorgehensweise dürfte keine großen Verständnisprobleme aufwerfen.
  2100.  
  2101.  
  2102.                                     -49-
  2103.  
  2104. 8 EDI
  2105.  
  2106. EDI ist ein zeilenorientierter (Primitiv-) Editor.  Er soll zum schnel-
  2107. len  Modifizieren  von Kleinigkeiten in  Batchfiles  o.ä.  dienen.  Zum 
  2108. Schreiben von Programmen oder zum Betreiben von Textverarbeitung sollte 
  2109. man einen anderen Editor verwenden (z.B. TEMPUS, EMACS u.s.w.).
  2110. Der  Vorteil  dieses eingebauten Programmteils liegt in  der  schnellen 
  2111. Verfügbarkeit;  Ladezeiten,  wie sie für die Verwendung eines  externen 
  2112. Editors benötigt werden, entstehen nicht.
  2113. Der Aufruf erfolgt mit "edi <filename>".
  2114. Jede  eingelesene  Zeile darf höchstens 76 Zeichen  lang  sein!  Kommen 
  2115. längere Zeilen vor, erfolgt ein Stutzen der Zeile (ohne Warnung!).
  2116. Tabulatorzeichen werden in Blanks umgewandelt (daran kann man erkennen, 
  2117. wie einfach der Editor ist)!
  2118. Bei Angabe eines nichtexistenten Files,  wird dieser bei Verlassen  von 
  2119. EDI  (via  's') erzeugt.  Es wird keine Warnung  ausgegeben,  daß  eine 
  2120. nichtvorhandene Datei angegeben worden ist!
  2121.  
  2122.  
  2123. 8.1 Die Kommandos von EDI
  2124.  
  2125. Es  gilt jeweils der in die Hochkommas eingeschlossene  Buchstabe,  die 
  2126. RETURN-Taste wird zum Abschließen der Eingabe nicht benutzt!
  2127.  
  2128.  
  2129. 'e'(dit) Editieren einer Zeile
  2130. Nach  Eingabe von 'e' wird eine Zeilennummer angefordert.  Das  eigent-
  2131. liche Editieren geht genau wie bei der Eingabe von Kommandos,  also mit 
  2132. den Cursortaste u.s.w.  Sollen eingegebene Änderungen nicht  übernommen 
  2133. werden, kann mit ^Z ein Abbruch des Kommandos durchgeführt werden.
  2134.  
  2135. 'l'(ist) Auflisten des eingelesenen Files
  2136. Es wird nach Eingabe von 'l' der gewünschte Zeilenbereich  angefordert. 
  2137. Wird bei 'START:' einfach nur RETURN gedrückt,  erfolgt ein  komplettes 
  2138. Auflisten des Files.
  2139. Ein vorzeitiges Abbrechen des Listvorgangs ist mit ^Z möglich.
  2140. F1 unterbricht die Ausgabe, mit F1 wird wieder fortgefahren.
  2141.  
  2142. 'p'(rint) Printerausgabe
  2143. Der  analoge Befehl zu 'list'.  Die Ausgabe erfolgt allerdings auf  den 
  2144. Drucker.
  2145. Die  Druckerinformationen  und Einstellungen  des  lp-Kommandos  werden 
  2146. nicht berücksichtigt!  Es handelt sich wirklich nur um eine  Ausgabeum-
  2147. leitung des 'list'-Befehls.
  2148.  
  2149.                                     -50-
  2150.  
  2151. 'f'(ind) Stringsuche
  2152. Sucht nach einem bestimmten String innerhalb von Zeilen. Jede Zeile, in 
  2153. der der einzugebende String vorkommt, wird ausgegeben.
  2154.  
  2155. 'r'(eplace) Stringersetzung
  2156. Es  muß  dabei  angegeben werden,  ob vor  dem  Ersetzungsvorgang  eine 
  2157. Sicherheitsabfrage erfolgen soll oder nicht.
  2158.  
  2159. 'd'(elete) Zeilenlöschen
  2160. Es wird der zu löschende Bereich angefordert.
  2161.  
  2162. 'i'(nsert) neue Zeilen einfügen
  2163. Es  wird  die Nummer der Zeile angefordert,  vor der die  neuen  Zeilen 
  2164. eingefügt werden sollen. Abbruch dieses Modus mit ^Z.
  2165.  
  2166. 'a'(ppend) Zeilenanfügen
  2167. Anfügen von neuen Zeilen an das Fileende. Abbruch wie immer mit ^Z.
  2168.  
  2169. 'n'(ew) Gesamtlöschung
  2170. Löscht alle Zeilen. Es findet allerdings eine Sicherheitsabfrage statt.
  2171.  
  2172. 's'(ave) Abspeichern
  2173. Abspeichern des Files und verlassen von EDI.
  2174.  
  2175. (e)'x'(it) Beenden
  2176. Verlassen von EDI ohne abspeichern.
  2177.  
  2178. 'h'(elp) Hilfe
  2179. Auflisten  der vorhandenen Befehle mit einer kurzen Beschreibung  sowie 
  2180. Angabe des aktuellen Files.
  2181.  
  2182.  
  2183.                                     -51-
  2184.  
  2185. 9 Fehlermeldungen
  2186.  
  2187. Der  Interpreter gibt zahlreiche Fehlermeldungen aus.  Diese sind  hier 
  2188. mit einer kurzen Beschreibung zusammengefaßt. Man darf allerdings nicht 
  2189. erwarten, daß command.prg Korrekturvorschläge macht.
  2190.  
  2191. «missing argument(s)»
  2192. Fehlernr.:1
  2193. Es gibt halt Befehle,  die erwarten einfach ein Argument oder wenn  sie 
  2194. ganz unverschämt sind, gleich mehrere.
  2195.  
  2196. «directory isn't empty»
  2197. Fehlernr.:2
  2198. Hier wurde versucht, ein nicht leeres Verzeichnis zu löschen.
  2199.  
  2200. «can't delete directory»
  2201. Fehlernr.:3
  2202. Man sollte nur Ordner entfernen, die es auch wirklich gibt.
  2203.  
  2204. «wrong commandsyntax or argument»
  2205. Fehlernr.:4
  2206. Kann  bei  der  Zahlenkonvertierung auftauchen oder  wenn  Befehle  mit 
  2207. unpassenden Argumenten versorgt werden.
  2208.  
  2209. «printer not connected»
  2210. Fehlernr.:5
  2211. Entweder Printer online stellen oder das Ding einfach mal einschalten.
  2212.  
  2213. «can't open file»
  2214. Fehlernr.:6
  2215. Passiert, wenn ein File nicht gefunden werden kann.
  2216.  
  2217. «can't delete file»
  2218. Fehlernr.:7
  2219. Kommt vor,  wenn rm es nicht schafft einen File zu löschen.  Zum  einen 
  2220. passiert dies,  wenn es den File nicht gibt,  zum anderen kann der File 
  2221. auch vor Löschen geschützt sein.
  2222.  
  2223. «command not found»
  2224. Fehlernr.:8
  2225. Kann eine Eingabe nun überhaupt nicht verarbeitet werden,  kommt  diese 
  2226. Meldung.
  2227.  
  2228. «too many arguments»
  2229. Fehlernr.:9
  2230. Manche  Befehle  wollen  überhaupt  kein  Argument,   andere  nur  eine                                      -52-
  2231.  
  2232.  
  2233. bestimmte Anzahl. Bei Überfütterung stößt man dann auf diese Meldung.
  2234.  
  2235. «argument out of range»
  2236. Fehlernr.:10
  2237. Wird  ausgegeben,  wenn beim time-Kommando bzw.  beim  date-Befehl  ein 
  2238. fehlerhaftes Argument angegeben worden ist.
  2239.  
  2240. «too much batch-files»
  2241. Fehlernr.:11
  2242. Es dürfen maximal drei Batchdateien geöffnet sein.
  2243.  
  2244. «use only in batch-files»
  2245. Fehlernr.:12
  2246. Es gibt Kommandos die nur dort Sinn haben (z.B. restart).
  2247.  
  2248. «label not found»
  2249. Fehlernr.:13
  2250. Eine Marke konnte nicht gefunden werden.
  2251.  
  2252. «can't create file»
  2253. Fehlernr.:14
  2254. Es war,  aus was für Gründen auch immer,  nicht möglich,  einen File zu 
  2255. erstellen.
  2256.  
  2257. «wrong directory»
  2258. Fehlernr.:16
  2259. Kommt beim Wechsel in einen nicht vorhandenen Ordner vor.
  2260.  
  2261. «don't use '*' or '?'»
  2262. Fehlernr.:17
  2263. Kommt bei einigen Befehlen vor,  die sich nur auf Einzelfiles  anwenden 
  2264. lassen (z.B. hide).
  2265.  
  2266. «can't execute '.acc'-files»
  2267. Fehlernr.:18
  2268. Der Interpreter ist nicht in der Lage, Deskaccessories auszuführen.
  2269.  
  2270. «directory exists»
  2271. Fehlernr.:19
  2272. Ein Ordner kann nicht zweimal gebastelt werden.
  2273.  
  2274. «can't create directory»
  2275. Fehlernr.:20
  2276. Aus  irgendwelchen  Gründen  kann die  Kreierung  eines  Ordners  nicht 
  2277. vorgenommen werden (z.B. Schreibschutz).
  2278.                                     -53-
  2279.  
  2280.  
  2281. «'!'-argument not in range»
  2282. Fehlernr.:21
  2283. Es wurde versucht auf einen alten Befehl zuzugreifen,  der nicht in der 
  2284. History-Liste ist.
  2285.  
  2286. «relation unknown»
  2287. Fehlernr.:22
  2288. Problemchen bei den if-Bedingungen in der Variablenabteilung.
  2289.  
  2290. «not enough disk-space»
  2291. Fehlernr.:23
  2292. Bedeutung dürfte klar sein.
  2293.  
  2294. «file not open»
  2295. Fehlernr.:24
  2296. Das  write-Kommando  wurde  angewandt,  obwohl  gerade  kein  File  mit 
  2297. open/append geöffnet worden ist.
  2298. Durch das Wegfallen dieser Befehle, gibt es diese Meldung nicht mehr!
  2299.  
  2300. «can't change mode»
  2301. Fehlernr.:25
  2302. Findet beim chmod-Befehl Verwendung.
  2303.  
  2304.  
  2305. Die Fehlernummer 15 existiert nicht mehr, deshalb die Lücke!
  2306.  
  2307. Es gibt einige Fehler, die zum sofortigen Programmstop des Interpreters 
  2308. führen.  Sollte es nicht mehr möglich sein, RAM-Platz für Einträge, wie 
  2309. z.B.  die History-Liste oder ALIAS,  zu beschaffen,  tritt ein  solcher 
  2310. Abbruch auf.
  2311.  
  2312. Das Programm wird übrigens gar nicht erst gestartet, wenn der Reservie-
  2313. rungsversuch des Interpreters,  der sich 32k RAM besorgen  will,  fehl-
  2314. schlägt.  Man  sollte  dann seine RAM-Disk etwas  kleiner  machen  oder 
  2315. einige Accessories entfernen.
  2316.  
  2317. Ist ein Fehler aufgetreten enthält status die Fehlernummer.
  2318.  
  2319.  
  2320.                                     -54-
  2321.  
  2322. 10 Die Ausgabeumleitung
  2323.  
  2324. Einige Befehle erlauben es,  die Ausgabe in einen File umzuleiten. Dazu 
  2325. muß direkt an das Kommando '|[file]' mit angegeben werden.
  2326. BEISPIEL:
  2327.  
  2328.                              tree|dir.txt
  2329.  
  2330. Das Directoryverzeichnis wird in den File 'dir.txt' geschrieben.
  2331.  
  2332. Folgende Kommandos sind mit der Umleitung ausgestattet:
  2333.  
  2334.           - tree    - time    - print   - cp      - wc
  2335.           - find    - date    - status  - alias   - pwd
  2336.           - od      - cat     - flags   - df
  2337.           - dir     - more    - version - device
  2338.           - ls      - echo    - cmp     - head
  2339.           - string  - vardump - help
  2340.  
  2341. Wird die Umleitung bei Kommandos angewandt, die diese Möglichkeit nicht 
  2342. bieten, wird ein leerer Ausgabefile erzeugt, sonst passiert nichts!
  2343. Unangenehm wird es allerdings wenn,  z.B.  mit od,  ein Ausgabefile vom 
  2344. Ausgabefile gemacht werden soll. Der File geht dann nämlich verloren!
  2345. Bei  Angabe  von  '|[file]' wird eine neue  Datei  erstellt,  gibt  man 
  2346. hingegen '||[file]' an, erfolgt die Umleitung an das Ende einer bereits 
  2347. bestehenden  Datei.  Existiert diese allerdings noch nicht,  wird  eine 
  2348. neue kreiert (Funktion dann wie ein '|[file]').
  2349. Es kann übrigens auch auf Gerätschaften ausgegeben  werden.  'dir|PRT:' 
  2350. sendet z.B. seine Ausgabe zum Druckerport (Centronics-Schnittstelle).
  2351.  
  2352.      PRT:      Umleitung zum Drucker
  2353.      CON:      Umleitung zur Konsole (entspricht keiner Angabe)  
  2354.      AUX:      zur RS-232 Schnittstelle (nicht getestet!)
  2355.      MIDI      (nicht getestet)
  2356.  
  2357.                                     -55-
  2358.  
  2359. 11 Allgemeines Blabla zum Schluß
  2360.  
  2361. 11.1 Lieferumfang
  2362.  
  2363. - COMMAND.PRG
  2364.   der eigentliche Interpreter.
  2365.  
  2366. - COMMAND.TXT
  2367.   die vorliegende Beschreibung.
  2368.  
  2369. - COMMAND.HLP
  2370.   wird für den help-Befehl gebraucht.
  2371.  
  2372. - TEST
  2373.   ein Batchfile, der zur Funktionsüberprüfung der meisten Komman-
  2374.   dos  dienen  soll.  Man  kann  anhand  dieser  Datei  auch  die 
  2375.   Funktionsweise der diversen Befehle recht gut erkennen.
  2376.  
  2377. - GETARG.PRG
  2378.   ein kleines Programm,  das zur Ermittlung der Parameter  dienen 
  2379.   soll,  die  an  ein Programm z.B.  durch eine  Shell  übergeben 
  2380.   werden.  Damit  lassen sich verschiedene  Anwendungen,  in  der 
  2381.   Hauptsache allerdings Compiler und Linker,  an den  Interpreter 
  2382.   anpassen.
  2383.   GETARG.PRG  muß nur in den entsprechenden  Programmnamen  umge-
  2384.   nannt werden, dann einfach den normalen Funktionsablauf starten 
  2385.   und schon kann man erkennen, welche Parameter übergeben werden.
  2386.  
  2387. - CC
  2388.   ein Beispielbatchfile,  der zur Compilierung und Linkung von C-
  2389.   Files  unter Verwendung des MEGAMAX-C-Compilers benutzt  werden 
  2390.   kann.  Tritt  ein  Fehler  auf,  wird  automatisch  ein  Editor 
  2391.   aufgerufen,  dieser  muß vom Benutzer definiert  werden  (siehe 
  2392.   Batchdatei).
  2393.  
  2394. - AS
  2395.   dieser Batchfile entspricht dem Beispiel 3, daß ich weiter oben 
  2396.   gegeben  habe.  Damit  lassen  sich  Assemblerfiles  durch  den 
  2397.   Assembler  und Linker aus dem Entwicklungspaket zu  lauffähigen 
  2398.   Programmen übersetzen.
  2399.  
  2400.  
  2401.  
  2402. 11.2 Zur Programmierung
  2403.  
  2404. Programmiert  wurde das ganze Ding mit dem  MEGAMAX-C-Compiler  (V1.1).                                      -56-
  2405.  
  2406.  
  2407. Eine  ganze Menge von dem Code ist allerdings in Assembler  geschrieben 
  2408. (Inlineassembler vom MEGAMAX).
  2409. Als Programmeditor wurde,  in der Hauptsache,  der MicroEMACS  benutzt. 
  2410. Der ist zwar nicht gerade berühmt,  was Geschwindigkeitsrekorde angeht, 
  2411. aber  sonst ziemlich mächtig (vor allem verarbeitet er auf  eine  recht 
  2412. vernünftige Art und Weise Tabulatoren).
  2413. Inzwischen  bin  ich  allerdings wegen der Größe  der  Sourcefiles  auf 
  2414. TEMPUS umgestiegen,  vielleicht kommt ja sogar mal eine Version, die es 
  2415. auch erlaubt, die Tabulatortaste zu verwenden.
  2416.  
  2417. Im  Laufe  der  Zeit sind immer wieder  Neuerungen  und  Verbesserungen 
  2418. dazugekommen.  Leider haben sich viele Verbesserungen in der Folge eher 
  2419. als  Verschlimmbesserungen  entpuppt.  Um diesem  Umstand  Rechnung  zu 
  2420. tragen, habe ich den File test gebastelt, der die meisten Kommandos auf 
  2421. ihre Funktionsfähigkeit hin überprüft.
  2422.  
  2423. Bei der Arbeit mit dem Programm kann es vorkommen,  daß man auf  Fehler 
  2424. stößt.  Eine  ganze Menge sind seit der Version 1.04  entfernt  worden, 
  2425. aber  ich fürchte,  daß es doch noch einige gibt.  Ein paar der  Fehler 
  2426. liegen im Betriebssystem, an denen kann ich leider nicht viel ändern.
  2427.  
  2428. Ob es mit dem neuen TOS Probleme geben wird, bleibt noch abzuwarten.
  2429. Theoretisch  dürfte  dies eigentlich nicht der Fall sein,  da  ich  nur 
  2430. offizielle Routinen bzw.  Systemaufrufe benutzt habe, eigentlich müßten 
  2431. bei  einer  fehlerfreien  neuen TOS-Version auch  einige  Probleme  des 
  2432. Interpreters verschwinden.
  2433. Wenn  man aber die Geschwindigkeit sieht,  mit der ATARI die neue  TOS-
  2434. Version der Öffentlichkeit zugänglich macht,  brauche ich mir hier wohl 
  2435. weder  graue  Haare  wachsen  zu  lassen  noch  sollte  man  großartige 
  2436. Hoffnungen hegen.
  2437. Da es scheinbar keine offiziellen Angaben darüber gibt, welche Register 
  2438. bei  GEMDOS/XBIOS/BIOS-Aufrufen verändert werden,  habe  ich  dort,  wo 
  2439. solche  Aufrufe  im Programm vorkommen,  die Register D2-D7  und  A2-A6 
  2440. gerettet. In der Hoffnung, daß mir dabei kein Fehler unterlaufen ist... 
  2441. Da  MEGAMAX für Funktionen wie z.B.  getc() oder fopen() wohl auch  auf 
  2442. diese  Aufrufe  aufbaut,  gehe ich mal davon aus,  daß  die  Entwickler 
  2443. dieses Compilers die notwendigen Register retten.
  2444.  
  2445. Nach  der Abarbeitung von externen Programmen werden nun einige  Zeiger 
  2446. wieder restauriert (z.B. für die Mausroutinen). Damit haben sich einige 
  2447. Probleme, die durch die Zeigerverbiegerei, ausgelöst durch irgendwelche 
  2448. Programme, entstanden sind, in Luft aufgelöst.
  2449. Trotzdem  gibt  es immer noch Programme,  die sich gar  nicht  mit  dem 
  2450. Interpreter  vertragen;  bis jetzt ist mir der entscheidende  Gedanken-
  2451. blitz zur Beseitigung dieser Restriktion noch nicht gekommen.
  2452. Sauber programmierte Anwendungen laufen aber klaglos.                                     -57-
  2453.  
  2454.  
  2455.  
  2456. An  dem Programm erhebe ich von meiner Seite keinerlei Copyrights  oder 
  2457. ähnliche Ansprüche , es kann von jedem beliebig genutzt und weitergege-
  2458. ben werden.
  2459. Natürlich  wäre  es  recht nett,  wenn  bei  einer  solchen  Weitergabe 
  2460. wirklich alle Files dabei sind, das Programm ist z.B. ohne ausreichende 
  2461. Beschreibung nicht allzuviel wert.
  2462.  
  2463. Interessenten  am  Sourcecode  können  diesen  gegen  Einsendung  einer 
  2464. Leerdiskette und eines frankierten Rückumschlags bekommen.
  2465. Da  ich an dem Programm immer noch Änderungen durchführe (neue  Befehle 
  2466. einbauen,  Fehler entfernen ...), enthält diese Sourcecodediskette dann 
  2467. auch die jeweils neueste Version, sowie einige Utility-Programme.
  2468. Diese  Sourcecode-Kopie  kostet  natürlich nichts  (außer  dem  bereits 
  2469. erwähnten Porto,  der Verpackung und der Diskette); es sollten für mich 
  2470. einfach, außer der Zeit, keine Kosten entstehen.
  2471.  
  2472. Anregungen,  Fragen und vor allem Meldungen von aufgetretenen Programm-
  2473. fehlern bitte ich an mich zu schicken:
  2474.  
  2475.                          Joachim Wolf
  2476.                          Heubergstr. 3
  2477.                     7014 Kornwestheim
  2478.                     Tel.:07154/7979
  2479.  
  2480.  
  2481.                                     -58-
  2482.  
  2483. 12 ANHANG A (Befehlszusammenfassung)
  2484.  
  2485. !              Zugriff auf altes Kommando
  2486. #              Dezimalwert umrechnen
  2487. $              Hexwert umrechnen
  2488. *=             Variablenmultiplikation
  2489. ++             Variable inkrementieren
  2490. +=             Variablenaddition
  2491. --             Variable dekrementieren
  2492. -=             Variablensubtraktion
  2493. /=             Variablendivision
  2494. 2*             Variable verdoppeln
  2495. 2/             Variable teilen
  2496. ;              Kommantarzeile
  2497. <              Statusabbruchbedingung
  2498. <>             Statusabbruchbedingung
  2499. ==             Statusabbruchbedingung
  2500. >              Statusabbruchbedingung
  2501. ?arg           Sprung zu Label, wenn Argument existiert
  2502. ?batch         zeigt Anzahl offener Batchdateien
  2503. ?ok            Virusüberprüfung
  2504. ?status#       status-Sprungbedingung
  2505. ?status<       status-Sprungbedingung
  2506. ?status=       status-Sprungbedingung
  2507. ?status>       status-Sprungbedingung
  2508. ?stop          bedingt Batchfile stoppen
  2509. @              Batchfile aufrufen
  2510. \              Oktalwert umrechnen
  2511. alias          Belegungen ausgeben
  2512. batch          Batchfile aufrufen
  2513. bell           einmal klingeln
  2514. break          Abbruch der Batchbearbeitung
  2515. cat            File(s) ausgeben
  2516. cd             Ordner wechseln
  2517. chmod          Fileattribute ändern
  2518. clear          Variablenwerte löschen
  2519. cleararg       löscht vorhanden $-Argumente
  2520. cls            Bildschirm löschen
  2521. cmp            Filevergleich
  2522. compress       Filekomprimierung
  2523. cp             File(s) kopieren
  2524. crsoff         Cursor ausschalten
  2525. crson          Cursor einschalten
  2526. crypt          Fileverschlüsselung
  2527. date           Datum ausgeben/setzen
  2528. defkey         Funktionstaste belegen                                     -59-
  2529.  
  2530.  
  2531. delalias       Alias-Eintrag entfernen
  2532. device         Ausgabe der ansprechbaren Massenspeicher
  2533. df             Speicherplatz auf Diskette
  2534. dir            File(s) auflisten
  2535. echo           String ausgeben
  2536. edi            Editor aufrufen
  2537. erase          Variablenliste entfernen
  2538. errorbreak     Batchabbruch im Fehlerfall
  2539. exist          Test ob File vorhanden
  2540. exit           Interpreter verlassen
  2541. expand         komprimierte Files expandieren
  2542. find           File(s) finden
  2543. flags          Flagausgabe
  2544. free           freier RAM-Bereich
  2545. getalias       Belegungen einlesen
  2546. goto           Sprung zu Marke
  2547. h              verfügbare alte Eingaben auflisten
  2548. head           die ersten zehn Zeilen eines Files ausgeben
  2549. help           Hilfefunktion
  2550. hide           File verstecken
  2551. history        verfügbare alte Eingaben auflisten
  2552. if ... <       Variablensprung
  2553. if ... <>      Variablensprung
  2554. if ... =       Variablensprung
  2555. if ... >       Variablensprung
  2556. ifarg          Sprung, wenn zwei Strings gleich
  2557. inverse        Bildschirmdarstellung umschalten
  2558. keyboard       Ausgabe Tastenbedeutungen
  2559. keys           Ausgabe der Funktionstastenbelegungen
  2560. lbl            Marke setzen
  2561. let            Variable belegen
  2562. lock           Rechner sperren
  2563. lp             File(s) ausdrucken
  2564. lpmargin       linker Rand bei Listings
  2565. lppage         Anzahl der Seite pro Seite bei Listings
  2566. ls             File(s) auflisten
  2567. merge          Files verbinden
  2568. mkdir          neuen Ordner
  2569. more           File(s) ausgeben
  2570. mouseoff       Mauszeiger ausschalten
  2571. mouseon        Mauszeiger einschalten
  2572. mv             File umbenennen
  2573. newalias       Neubelegung einführen
  2574. notext         Batchkommandos nicht ausgeben
  2575. numbers        bei Listings Zeilennummer ausgeben ein/aus
  2576. od             Filedump                                     -60-
  2577.  
  2578.  
  2579. oldy           wenn File 1 älter ist als File 2, dann gehe zu Label
  2580. page           Listings mit Seitennummern versehen
  2581. path           Angabe eines Suchpfades
  2582. pchange        bei path-Befehl Ordnerwechsel ein/aus
  2583. print          Variablenwert ausgeben
  2584. pwd            Ausgabe des aktuellen Pfades
  2585. reset          Rechner zurücksetzen
  2586. resetlp        Printerinitialisierung
  2587. restart        an Batchfileanfang springen
  2588. rm             File(s) löschen
  2589. rmdir          Ordner löschen
  2590. save           File(s) nur lesbar
  2591. savealias      Belegungen abspeichern
  2592. setarg         setzen von $-Argumenten
  2593. savehist       history.dat abspeichern ein/aus
  2594. setlp          Printerinitialisierung
  2595. settab         Tabulator setzen
  2596. shiftarg       verschieben von $-Argumenten
  2597. size0          Test, ob File nicht vorhanden
  2598. slash          '/' -> '\' ein/aus
  2599. srhist         History ein/aus
  2600. srtab          automatische Tabulatorfunktion aus-/einschalten
  2601. srtitle        Titelseitenausgabe ein/aus
  2602. status         Status ausgeben
  2603. stop           Batchfile stoppen
  2604. string          Stringsuche
  2605. sz             Ausgabe Beta ein/aus
  2606. text           Batchkommandos ausgeben
  2607. time           Zeit ausgeben/setzen
  2608. tree           Ordnerstruktur auflisten
  2609. unsave         File(s) les- & schreibbar
  2610. vardump        Variable ausgeben
  2611. version        Erstellungsdatum ausgeben
  2612. wait           auf Tastendruck warten
  2613. wc             Zeilen & Ziffern zählen
  2614.  
  2615. Ich hoffe,  daß ich in diese Liste alle vorhandenen Befehle aufgenommen 
  2616. habe.
  2617. Sie soll lediglich als Gedankenstütze dienen!  Die vollständige  Syntax 
  2618. zu  einem  bestimmten  Befehl ist  den  vorangehenden  Ausführungen  zu 
  2619. entnehmen.
  2620. Im  Anhang  findet  sich ein Index,  der ein  schnelles  Auffinden  der 
  2621. gesuchten Kommandos ermöglicht.
  2622.  
  2623.  
  2624.                                     -61-
  2625.  
  2626. 13 ANHANG B (oldy-Beispiele)
  2627.  
  2628. 13.1 Beispiel 1 für die Verwendung des oldy-Befehls
  2629.  
  2630.           let kontrolle 3
  2631.           size0 command.o compiliere1
  2632.           oldy command.o command.c compiliere1
  2633.           lbl com
  2634.           size0 com.o compiliere2
  2635.           oldy com.o com.c compiliere2
  2636.           lbl edi
  2637.           size0 edi.o compiliere3
  2638.           oldy edi.o edi.c compiliere3
  2639.           lbl linke
  2640.           if kontrolle = 3 ende
  2641.           link command.o com.o edi.o -O command.prg
  2642.           lbl ende
  2643.           stop
  2644.           lbl compiliere1
  2645.           cc command.c
  2646.           <> 0
  2647.           imp command.o
  2648.           -- kontrolle
  2649.           goto com
  2650.           lbl compiliere2
  2651.           cc com.c
  2652.           <> 0
  2653.           imp com.o
  2654.           -- kontrolle
  2655.           goto edi
  2656.           lbl compiliere3
  2657.           cc edi.c
  2658.           <> 0
  2659.           imp edi.o
  2660.           -- kontrolle
  2661.           goto linke
  2662.  
  2663. Das  Beispiel  bezieht sich wieder auf die drei Teile,  aus  denen  der 
  2664. Kommandointerpreter besteht.
  2665. Der  Batchfile überprüft das Vorhandensein der  Objektfiles  bzw.  wenn 
  2666. diese vorhanden sind,  ihr Alter.  Sind sie nicht vorhanden oder  älter 
  2667. als der zugehörige Sourcecode, wird ein Compilerdurchgang gestartet.
  2668.  
  2669. Das zweite Beispiel soll zeigen,  daß bei Verwendung anderer  Kommandos 
  2670. eine gewisse Platzersparnis zu erzielen ist:
  2671.                                     -62-
  2672.  
  2673.  
  2674. 13.2 oldy, die Zweite
  2675.  
  2676.      setarg command com edi             ;die Quelldateien
  2677.      lbl loop                           ;Compilerabteilung
  2678.      size0 $0.c weiter                  ;Sourcefile fehlt
  2679.      size0 $0.o compiliere              ;Objektfile fehlt
  2680.      oldy $0.o $0.c compiliere          ;Alter überprüfen
  2681.      goto weiter                        ;nächsten File
  2682.      lbl compiliere                     ;eigentliche Compilierung
  2683.      cc $0.c
  2684.      <> 0                               ;raus wenn Fehler
  2685.      imp $0.o                           ;Codeimprover
  2686.      lbl weiter
  2687.      shiftarg                           ;nächste Datei
  2688.      ?arg 0 loop                        ;wenn noch eine da ist
  2689.      ; sonst Ende
  2690.      link command.o com.o edi.o -O command.prg  ;das Ergebnis
  2691.  
  2692.  
  2693. Ich hoffe,  diese Beispiele verdeutlichen die Möglichkeiten,  die  oldy 
  2694. bietet.
  2695. Man kann damit zwar keine Super-MAKE-Umgebung erstellen, aber Kleinvieh 
  2696. macht auch Mist und aufgrund der Einfachheit in der  Benutzung,  sollte 
  2697. jeder,  der öfters Programme erstellt, deren Sourcecode mehrere Dateien 
  2698. umfaßt,  in  der Lage sein,  einen nicht unerheblichen Nutzen  aus  dem 
  2699. Kommando ziehen zu können.
  2700.  
  2701.  
  2702.                                     -63-
  2703.  
  2704. 14 Index
  2705.  
  2706. ! ................... 31f,32ff,33ff,53,58
  2707. !! .................. 33f
  2708. # ................... 28
  2709. $ ................... 28
  2710. *= .................. 45,58
  2711. ++ .................. 45,58
  2712. += .................. 45,58
  2713. -- .................. 45f,58,61f
  2714. -= .................. 45ff,58
  2715. / ................... 11,21,25f,26,28,60
  2716. /= .................. 45,58
  2717. 2* .................. 45,46,58
  2718. 2/ .................. 46f,58
  2719. < ................... 40,59
  2720. <> .................. 39,41f,44f,59,61f,62
  2721. = ................... 59
  2722. == .................. 40,43,58
  2723. > ................... 40,59
  2724. ?arg ................ 36f,39,58,62
  2725. ?batch .............. 36,58
  2726. ?ok ................. 7,58
  2727. ?status ............. 40ff,42f,48f,58ff
  2728. ?stop ............... 36,58
  2729. @ ................... 35f,41,43,47f,58
  2730. ALIAS ............... 53
  2731. Alias ............... 29f,30f,59
  2732. Ausgabeumleitung .... 27
  2733. BACKSPACE ........... 4
  2734. Batch ............... 3,7,14,29,30,34ff,35ff,36ff,37ff,38ff,39ff,40ff,
  2735.                       41ff,42ff,43f,44ff,47ff,48,49,52,55f,58ff,59f,
  2736.                       60f,61
  2737. Bildschirm .......... 7,9,14,17f,19f,20,33,36,46f,58,59
  2738. CONTROL ............. 4f
  2739. CONTROL-D ........... 4
  2740. CONTROL-X ........... 4
  2741. CURSOR-DOWN ......... 32,33
  2742. CURSOR-UP ........... 32,33
  2743. DELETE .............. 4
  2744. Directory ........... 8,11,19,22,24,54
  2745. Drucker ............. 17f,18,23f,24f,25f,26f,49f,54f
  2746. EMACS ............... 49,56
  2747. ESC ................. 4f
  2748. Fileattribut ........ 8,13,58
  2749. Funktionstaste ...... 7,13f,17,58,59                                     -64-
  2750.  
  2751.  
  2752. HELP ................ 16
  2753. History ............. 3f,25f,31f,32f,33,34,53f,60
  2754. INSERT .............. 4
  2755. Kommandointerpreter . 3,29,47,61
  2756. Laufwerk ............ 5,7,8ff,9,10,11ff,13f,14,15f,19,21f,22f,23,26,
  2757.                       27f,28
  2758. MEGAMAX-C ........... 41f,42,55f
  2759. MS-DOS .............. 3
  2760. Maus ................ 3,19f,20ff,56,59f
  2761. Ordner .............. 4,5,7,8f,9f,11,13f,14,16,18ff,21,22,24f,26f,51,
  2762.                       52f,58,59,60f
  2763. SHIFT ............... 4f,13
  2764. TAB ................. 25f
  2765. TEMPUS .............. 49,56
  2766. UNIX ................ 3,31
  2767. VMS ................. 3,32,35
  2768. Variable ............ 38f,44ff,45ff,46ff,47ff,48,53,58ff,59ff,60f
  2769. Verzeichnis ......... 4,5f,7f,8f,9,11ff,13,14f,15,16,18f,19,21f,23,26,
  2770.                       29,40,51
  2771. \ ................... 8,11f,21,25f,28f,58,60
  2772. alias ............... 29ff,30f,54,58
  2773. append .............. 27,53
  2774. auto.com ............ 40
  2775. batch ............... 34,35ff,41,52f,58
  2776. bell ................ 7,58
  2777. break ............... 36,58
  2778. cat ................. 7ff,19f,24,54,58
  2779. cd .................. 7,8ff,18,19,25,27,58
  2780. chmod ............... 8,9f,16,17,53,58
  2781. clear ............... 46,58
  2782. cleararg ............ 39,58
  2783. close ............... 27
  2784. cls ................. 9,43,48,58
  2785. cmp ................. 9,10f,32ff,54,58
  2786. command.hlp ......... 16
  2787. command.prg ......... 3f,29f,35,40,41ff,47,48f,51,61,62
  2788. compress ............ 10f,14f,58
  2789. counter ............. 34f
  2790. cp .................. 6,11ff,32ff,54,58
  2791. crsoff .............. 11,58
  2792. crson ............... 11,58
  2793. crypt ............... 11,12f,58
  2794. date ................ 12f,52,54,58
  2795. defkey .............. 13f,17,58
  2796. delalias ............ 29,59
  2797. device .............. 13,54,59                                     -65-
  2798.  
  2799.  
  2800. df .................. 13,54,59
  2801. dir ................. 4,13f,14ff,16f,18,19,54f,59
  2802. echo ................ 14f,35ff,37f,39f,43ff,54,59
  2803. edi ................. 48,49,59
  2804. erase ............... 46,59
  2805. errorbreak .......... 15,37f,59
  2806. exist ............... 37ff,59
  2807. exit ................ 14,48ff,59
  2808. expand .............. 10f,14,59
  2809. find ................ 14,15f,54,59
  2810. flags ............... 15,20,22,23,24f,25ff,26,36,37,54,59
  2811. free ................ 15,59
  2812. getalias ............ 29,59
  2813. goto ................ 37f,59,61f,62
  2814. h ................... 33,59
  2815. head ................ 16f,54,59
  2816. help ................ 16f,54,55,59
  2817. hide ................ 16f,52,59
  2818. history ............. 33f,59
  2819. if .................. 44ff,48ff,59ff,61
  2820. ifarg ............... 39,59
  2821. inquire ............. 39f
  2822. inverse ............. 17f,59
  2823. keyboard ............ 17,59
  2824. keys ................ 17,59
  2825. lbl ................. 37ff,39,42,43,48f,59,61ff,62f
  2826. let ................. 44f,46,48ff,59,61
  2827. lock ................ 17f,59
  2828. lp .................. 17f,18,23f,25,49,59
  2829. lpmargin ............ 15,18,59
  2830. lppage .............. 15,18,59
  2831. ls .................. 18f,54,59
  2832. merge ............... 18f,59
  2833. mkdir ............... 18,19,59
  2834. more ................ 19f,24,54,59
  2835. mouseoff ............ 19,20,59
  2836. mouseon ............. 20f,59
  2837. mv .................. 20f,59
  2838. newalias ............ 30f,59
  2839. notext .............. 15,36,43,48,59
  2840. numbers ............. 15,20,59
  2841. od .................. 20,21f,54f,59
  2842. oldy ................ 38,60,61ff,62f
  2843. open ................ 27,53
  2844. page ................ 15,21,60
  2845. path ................ 5,21f,22ff,60f                                     -66-
  2846.  
  2847.  
  2848. pchange ............. 15,21,22,60
  2849. print ............... 46f,54,60
  2850. pwd ................. 22,54,60
  2851. reset ............... 22,60
  2852. resetlp ............. 15,18,23ff,24,60
  2853. restart ............. 36,42,52,60
  2854. rm .................. 16,23ff,41f,42,43,51,60
  2855. rmdir ............... 24f,60
  2856. save ................ 23,24,27,60
  2857. savealias ........... 29,30f,60
  2858. savehist ............ 15,24,60
  2859. setarg .............. 39ff,60,62
  2860. setlp ............... 15,18,24f,60
  2861. settab .............. 15,18,24f,60
  2862. shiftarg ............ 38,39,60,62
  2863. size0 ............... 37f,43f,60,61f,62f
  2864. slash ............... 15,25f,60
  2865. srhist .............. 15,25f,60
  2866. srtab ............... 15,25,60
  2867. srtitle ............. 15,18,25f,60
  2868. status .............. 38ff,39,40ff,53,54,58ff,60
  2869. stop ................ 36f,42,43,60,61
  2870. string .............. 25,26f,54,60
  2871. sz .................. 15,26,60
  2872. text ................ 15,36f,60
  2873. time ................ 26f,52,54,60
  2874. tree ................ 26,54f,60
  2875. unsave .............. 23,24f,27,60
  2876. vardump ............. 46,54,60
  2877. version ............. 27,54,60
  2878. wait ................ 36,42,60
  2879. wc .................. 27,54,60
  2880. write ............... 27,53
  2881.  
  2882.